Cấu trúc dữ liệu Python linh hoạt, có thể mở rộng để sử dụng chung. Nhận dữ liệu vào và ra một cách đáng tin cậy, không cần soạn sẵn và với tốc độ
middle đứng trên vai của attrs và nhằm mục đích đơn giản nhất có thể để lấy dữ liệu từ các đối tượng phức tạp sang nguyên hàm Python và ngược lại, với trình xác thực, trình chuyển đổi, nhiều đường và các tiện ích khác. trung gian có thể được sử dụng với khung web ưa thích của bạn, ứng dụng công việc nền, trình phân tích cú pháp cấu hình, v.v.
xem lén
Ví dụ đơn giản nhất về phần giữa và một số tính năng của nó [sử dụng Python 3. 6+ cú pháp]
>>> import typing
>>> import middle
>>> class Address[middle.Model]:
.. street_name: str
.. number: typing.Optional[int]
.. city: str
>>> class Person[middle.Model]:
.. name: str
.. age: int
.. address: typing.Dict[str, Address]
>>> data = {
.. "name": "John Doe",
.. "age": 42,
.. "address": {
.. "home": {
.. "street_name": "Foo St",
.. "number": None,
.. "city": "Python Park"
.. },
.. "work": {
.. "street_name": "Bar Blvd",
.. "number": "1337",
.. "city": "Park City"
.. }
.. }
.. }
>>> person = Person[data]
>>> person
Person[name='John Doe', age=42, address={'home': Address[street_name='Foo St', number=None, city='Python Park'], 'work': Address[street_name='Bar Blvd', number=1337, city='Park City']}]
>>> middle.asdict[person]
{'name': 'John Doe', 'age': 42, 'address': {'home': {'street_name': 'Foo St', 'number': None, 'city': 'Python Park'}, 'work': {'street_name': 'Bar Blvd', 'number': 1337, 'city': 'Park City'}}}
Muốn có một ví dụ phức tạp hơn, với Python 3. 5 cú pháp tương thích?
>>> from typing import Dict, List
>>> import middle
>>> class Game[middle.Model]:
.. name: str = middle.field[]
.. score: float = middle.field[minimum=0, maximum=10]
.. resolution_tested: str = middle.field[pattern="^\d+x\d+$"]
.. genre: List[str] = middle.field[unique_items=True]
.. rating: Dict[str, float] = middle.field[max_properties=5]
>>> data = {
.. "name": "Cities: Skylines",
.. "score": 9.0,
.. "resolution_tested": "1920x1200",
.. "genre": ["Simulators", "City Building"],
.. "rating": {
.. "IGN": 8.5,
.. "Gamespot": 8.0,
.. "Steam": 4.5
.. }
.. }
>>> game = Game[**data]
>>> game
Game[name='Cities: Skylines', score=9.0, resolution_tested='1920x1200', genre=['Simulators', 'City Building'], rating={'IGN': 8.5, 'Gamespot': 8.0, 'Steam': 4.5}]
>>> middle.asdict[game]
{'name': 'Cities: Skylines', 'score': 9.0, 'resolution_tested': '1920x1200', 'genre': ['Simulators', 'City Building'], 'rating': {'IGN': 8.5, 'Gamespot': 8.0, 'Steam': 4.5}}
ở giữa đủ linh hoạt để hiểu Enum, các mô hình lồng nhau và nhiều loại khác nhau được khai báo trên mô-đun đánh máy. Ngoài ra, bạn có thể mở rộng nó cho các lớp học của riêng bạn
Sử dụng cắt chuỗi để lấy các ký tự từ giữa chuỗi, e. g. result = my_str[start_index:stop_index]
. Phần của chuỗi sẽ bắt đầu tại chỉ mục đã chỉ định và sẽ tăng lên, nhưng không bao gồm chỉ mục stop
đã chỉ định
Ví dụ đầu tiên sử dụng cắt chuỗi để trích xuất các ký tự từ giữa chuỗi
Cú pháp cắt chuỗi là my_str[start:stop:step]
Chỉ số start
là bao gồm, trong khi chỉ số stop
là loại trừ [tối đa, nhưng không bao gồm]
Các chỉ mục của Python dựa trên số 0, vì vậy ký tự đầu tiên trong chuỗi có chỉ mục là 0
và ký tự cuối cùng có chỉ mục là -1
hoặc len[my_str] - 1
Phương thức trả về chỉ mục của lần xuất hiện đầu tiên của chuỗi con được cung cấp trong chuỗi
Lát cắt bắt đầu tại chỉ mục 5
và đi lên nhưng không bao gồm chỉ mục 9
Một cách dễ dàng để nghĩ về nó là lát cắt bắt đầu tại chỉ mục đã chỉ định và đi đến chỉ mục dừng đã cho trừ đi 1
Nếu bạn cần lấy ký tự giữa của chuỗi, hãy sử dụng hàm sau
Nếu chuỗi trống, chúng tôi trả về một chuỗi trống
Nếu chuỗi có số ký tự chẵn, chúng tôi trả về ký tự ở giữa bên trái
Nếu chuỗi có số ký tự lẻ ta trả về ký tự ở giữa
Chúng ta đã sử dụng toán tử chia sàn [//] vì phép chia stop
0 của số nguyên cho kết quả là một số thực, trong khi phép chia sàn stop
1 của số nguyên cho kết quả là một số nguyên
Trong hướng dẫn lập trình python này, chúng ta sẽ tìm hiểu cách tìm số ở giữa trong danh sách số. Ví dụ: nếu danh sách là [1,6,5,4,3] thì phần tử ở giữa là 4. Vì hai số 1,3 bé hơn 4 và hai phần tử 5,6 lớn hơn 4. Danh sách của chúng tôi sẽ chứa một số phần tử lẻ
thuật toán
Bạn có thể giải quyết vấn đề này bằng cách lần lượt duyệt qua từng phần tử của danh sách và kiểm tra từng phần tử xem nó có phải là phần tử ở giữa hay không. Chúng ta có thể kiểm tra nó bằng cách so sánh số lượng của tất cả các phần tử nhỏ hơn và lớn hơn trong danh sách. Nếu đối với một số, danh sách chứa số lượng nhỏ hơn và số lớn hơn bằng nhau, thì nó sẽ là số ở giữa trong danh sách đó. Vấn đề chính của giải pháp này là chúng ta cần lặp lại danh sách nhiều lần
Một cách khác và cách ưa thích nhất để giải quyết vấn đề này là sắp xếp danh sách. Nếu chúng ta sắp xếp danh sách, nó sẽ di chuyển phần tử ở giữa vào giữa. Sử dụng độ dài của danh sách, chúng ta có thể dễ dàng tìm ra phần tử ở giữa
Sắp xếp danh sách trong python
Python đi kèm với một phương thức sẵn có 'sort[]' để sắp xếp các phần tử của danh sách theo thứ tự tăng dần hoặc giảm dần. Nó không nhận bất kỳ tham số nào nhưng bạn có thể tùy chọn chuyển một tham số 'đảo ngược' để sắp xếp danh sách theo thứ tự đảo ngược
Nếu 'reverse' là 'True', danh sách sẽ được sắp xếp theo thứ tự đảo ngược. Mặt khác, nó sẽ sắp xếp danh sách theo thứ tự tăng dần, đây là hành vi mặc định
phương thức sort[] không trả về bất kỳ giá trị nào. Nó sẽ sửa đổi danh sách ban đầu
Trong ví dụ này, chúng tôi sẽ sắp xếp danh sách theo thứ tự mặc định. Trên thực tế, chúng ta có thể sắp xếp nó theo bất kỳ thứ tự nào chúng ta muốn. Phần tử mid sẽ luôn được đặt ở giữa nếu danh sách được sắp xếp