Hướng dẫn how do you define a structure in python? - làm thế nào để bạn xác định một cấu trúc trong python?
Ảnh của Washington Oliveira 🇧🇷 trên undplash Chúng ta đều biết về các cấu trúc được sử dụng trong C và C ++. Một trong đó cho phép gói nhiều loại dữ liệu nguyên thủy vào kiểu dữ liệu do người dùng xác định. Trong Python, có thể xác định một cấu trúc bằng một lớp, trong đó người dùng không xác định bất kỳ chức năng nào trong lớp. OK, tôi biết rằng mặc dù C doesn, C ++ cho phép các định nghĩa chức năng trong cấu trúc. Đây là một tính năng tôi chưa bao giờ sử dụng. Tôi có thể nhớ rằng việc tạo một lớp với tất cả các thành viên dữ liệu và các chức năng thành viên là công khai, nơi có ý nghĩa khi sử dụng một cấu trúc thay vì một lớp. Các cấu trúc rất tiện dụng để xác định một loại dữ liệu phức tạp được hình thành bằng cách sử dụng nhiều loại dữ liệu nguyên thủy đơn giản. Trong Python, có một cách mà bạn có thể xác định một bộ sưu tập bắt chước các thuộc tính tương tự như cấu trúc bằng cách sử dụng tên được đặt tên trong các bộ sưu tập.namedtuple under collections. Một ví dụ dưới đây, một tập hợp.namedtuple điểm được xác định có chứa các trường struct Point { 2 và struct Point { 3.from collections import namedtuple Một cấu trúc tương tự trong C ++ có thể được định nghĩa là struct Point { Giá trị mặc định cho các biến có thể được đặt bằng cách sử dụng for the variables can be set using Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) Bắt đầu với C ++ 11, nó có thể cung cấp cho các thành viên cấu trúc phi tĩnh một giá trị mặc định: struct Point { Khởi tạo tên được đặt tên bằng cách sử dụng cú pháp tương tự như gọi hàm tạo. Sử dụng một đối số từ khóa hoặc vị trí. the namedtuple using a syntax similar to calling a constructor. Using a positional or keyword argument. ntpt = Point(3, y=6) Truy cập các trường của một cái tên tương tự như một cấu trúc the fields of a namedtuple similar to a structure ntpt.x + ntpt.y Hoặc như tên cho thấy, như một tuple ntpt[0] + ntpt[1] Đặt trường bằng cách sử dụng thay thế a field using replace ntpt._replace(x=5) Có một vài điều khác mà bạn có thể làm với một cái tên là Python cụ thể. Chẳng hạn như khởi tạo các trường bằng cách sử dụng danh sách bằng cách sử dụng struct Point { 4 và tạo ra lệnh cho các trường và giá trị bằng cách sử dụng struct Point { 5.Bạn có thể liệt kê các tên trường bằng struct Point { 6 và các giá trị mặc định cho các trường bằng cách sử dụng struct Point { 7.3 -> thứ tưNamedTuple under typing. Có một giải pháp thay thế trong Python, một phiên bản được đánh máy của một tên gọi là tên có tên là theo đánh máy. from collections import NamedTuple Nơi bạn có thể thêm các loại trường được liệt kê trong các chú thích. class Point(NamedTuple): Để cung cấp một giá trị mặc định, bạn phải xác định một lớp kế thừa có tênTuple. Sử dụng gõ. Bạn cũng có thể chỉ sử dụng một lớp học thông thường. 3 -> thứ tư struct Point { 0Sử dụng các bộ dữ liệu có tên nếu bạn ổn với một loại bất biến. Nếu không, chỉ cần xác định một lớp nếu bạn muốn có thể tạo ra nhiều hơn một. Một từ điển là một giải pháp kinh điển khác. struct Point { 1Nếu bạn muốn, bạn có thể sử dụng chức năng này để tạo các lớp có thể thay đổi có cùng cú pháp với struct Point { 8 3 -> thứ tư
Danh sách liên kếtDanh sách được liên kết là một cấu trúc dữ liệu tuyến tính, trong đó các phần tử không được lưu trữ tại các vị trí bộ nhớ liên tục. Các yếu tố trong một danh sách được liên kết được liên kết bằng cách sử dụng các con trỏ như trong hình ảnh dưới đây: & nbsp; Program: Python3Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 3Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 5Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 6Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 8Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7struct Point { 0struct Point { 1struct Point { 2struct Point { 3struct Point { 2struct Point { 5struct Point { 6struct Point { 7struct Point { 8struct Point { 6ntpt = Point(3, y=6) 0struct Point { 8ntpt = Point(3, y=6) 2ntpt = Point(3, y=6) 3Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7ntpt = Point(3, y=6) 5struct Point { 8struct Point { 2struct Point { 3struct Point { 2struct Point { 5ntpt.x + ntpt.y 1Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 8struct Point { 8struct Point { 2struct Point { 3struct Point { 2struct Point { 5Output:
Cây rơmXếp hàng Program: CâyĐồ thị struct Point { 2ntpt[0] + ntpt[1] 8struct Point { 2struct Point { 5ntpt._replace(x=5) 1struct Point { 7struct Point { 8ntpt._replace(x=5) 1ntpt = Point(3, y=6) 0struct Point { 8struct Point { 2ntpt[0] + ntpt[1] 8struct Point { 2struct Point { 5Bản đồ băm struct Point { 2from collections import NamedTuple 6from collections import NamedTuple 7from collections import NamedTuple 8from collections import NamedTuple 9struct Point { 2struct Point { 5class Point(NamedTuple): 2struct Point { 2ntpt[0] + ntpt[1] 8Output:
Xếp hàngCây Program: Python3Đồ thị struct Point { 2struct Point { 05struct Point { 2struct Point { 5struct Point { 08struct Point { 7struct Point { 8struct Point { 08ntpt = Point(3, y=6) 0struct Point { 8struct Point { 2struct Point { 05struct Point { 2struct Point { 5struct Point { 2struct Point { 19struct Point { 20from collections import NamedTuple 9Bản đồ băm struct Point { 2struct Point { 27from collections import NamedTuple 7from collections import NamedTuple 8from collections import NamedTuple 9struct Point { 2struct Point { 5struct Point { 33struct Point { 20from collections import NamedTuple 9struct Point { 2struct Point { 05Output:
CâyĐồ thị Program: Python3Bản đồ băm Danh sách được liên kết là một cấu trúc dữ liệu tuyến tính, trong đó các phần tử không được lưu trữ tại các vị trí bộ nhớ liên tục. Các yếu tố trong một danh sách được liên kết được liên kết bằng cách sử dụng các con trỏ như trong hình ảnh dưới đây: & nbsp; Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 3Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 5Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 6Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 8Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7struct Point { 0struct Point { 1[’Thứ nhất,’ thứ hai, ’thứ ba]] [’Thứ nhất,’ thứ hai, ’thứ ba,’ thứ sáu, ’thứ tư,‘ thứ năm] [’Thứ nhất,’ thứ ba, ’thứ sáu,’ thứ tư, ‘thứ năm]] Một ngăn xếp là một cấu trúc tuyến tính cho phép dữ liệu được chèn và loại bỏ khỏi cùng một đầu do đó theo hệ thống cuối cùng trong (LIFO) cuối cùng. Chèn và xóa được gọi là push () và pop () tương ứng. struct Point { 45struct Point { 2struct Point { 70struct Point { 43struct Point { 72struct Point { 45struct Point { 61struct Point { 43struct Point { 76struct Point { 45struct Point { 61struct Point { 43struct Point { 80Python3 ntpt.x + ntpt.y 8Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 5Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 6Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 8Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7struct Point { 0struct Point { 1from collections import NamedTuple 1Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 from collections import NamedTuple 3ntpt[0] + ntpt[1] 8struct Point { 96Output:
Đồ thịBản đồ băm Program: Python3Danh sách được liên kết là một cấu trúc dữ liệu tuyến tính, trong đó các phần tử không được lưu trữ tại các vị trí bộ nhớ liên tục. Các yếu tố trong một danh sách được liên kết được liên kết bằng cách sử dụng các con trỏ như trong hình ảnh dưới đây: & nbsp; Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 3Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 5Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 6Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 8Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7struct Point { 0struct Point { 1[’Thứ nhất,’ thứ hai, ’thứ ba]] [’Thứ nhất,’ thứ hai, ’thứ ba,’ thứ sáu, ’thứ tư,‘ thứ năm] [’Thứ nhất,’ thứ ba, ’thứ sáu,’ thứ tư, ‘thứ năm]] Một ngăn xếp là một cấu trúc tuyến tính cho phép dữ liệu được chèn và loại bỏ khỏi cùng một đầu do đó theo hệ thống cuối cùng trong (LIFO) cuối cùng. Chèn và xóa được gọi là push () và pop () tương ứng. Python3 ntpt.x + ntpt.y 8Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 5Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 6Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 8Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7struct Point { 0struct Point { 1from collections import NamedTuple 1Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 from collections import NamedTuple 3ntpt[0] + ntpt[1] 8[’Thứ nhất,’ thứ hai, ’thứ ba,’ thứ tư, ’thứ năm]] thứ năm [’Thứ nhất,’ thứ hai, ’thứ ba,’ thứ tư]] Hàng đợi là một cấu trúc tuyến tính cho phép chèn các phần tử từ một đầu và xóa khỏi đầu kia. Do đó, nó theo sau, đầu tiên trong phương pháp đầu tiên (FIFO). Đầu cuối cho phép xóa được gọi là mặt trước của hàng đợi và đầu kia được gọi là phần cuối phía sau của hàng đợi. & NBSP; class Point(NamedTuple): 5Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 5Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 6Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 8Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7struct Point { 0struct Point { 1from collections import NamedTuple 1Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 from collections import NamedTuple 3struct Point { 05struct Point { 40struct Point { 41 Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 74struct Point { 43struct Point { 63struct Point { 45Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 78 Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 79Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 80 Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 81struct Point { 70struct Point { 43Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 84Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 85struct Point { 2struct Point { 70Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 88Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 11Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 90Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 91Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 93Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 85Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 95Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 struct Point { 43Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 98Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 85struct Point { 00 struct Point { 01struct Point { 02struct Point { 2struct Point { 70struct Point { 05Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 11Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 90struct Point { 08Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 93struct Point { 02Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 95Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 struct Point { 14Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 12struct Point { 16Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 struct Point { 18struct Point { 19struct Point { 8struct Point { 21struct Point { 20Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7struct Point { 24struct Point { 8struct Point { 21from collections import NamedTuple 8Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7ntpt = Point(3, y=6) 3struct Point { 8struct Point { 21ntpt = Point(3, y=6) 3Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7struct Point { 24struct Point { 8struct Point { 21struct Point { 20Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7ntpt = Point(3, y=6) 3struct Point { 8struct Point { 41Output:
Bản đồ bămBản đồ băm là cấu trúc dữ liệu được lập chỉ mục. Bản đồ băm sử dụng hàm băm để tính toán một chỉ mục bằng một khóa thành một mảng xô hoặc khe. Giá trị của nó được ánh xạ tới xô với chỉ mục tương ứng. Chìa khóa là duy nhất và bất biến. Trong Python, từ điển là ví dụ về bản đồ băm. Program: Python3struct Point { 41 struct Point { 43struct Point { 40Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 78 struct Point { 46Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 80 struct Point { 48struct Point { 45struct Point { 2struct Point { 51struct Point { 52struct Point { 53struct Point { 54Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 struct Point { 56struct Point { 20struct Point { 58Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 6Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 7from collections import NamedTuple 8struct Point { 58__struct Point { 69struct Point { 2struct Point { 5struct Point { 72ntpt = Point(3, y=6) 3struct Point { 74Point = namedtuple('Point', ['x', 'y'], defaults=[0, 0]) 4 struct Point { 7struct Point { 69struct Point { 2struct Point { 5struct Point { 80struct Point { 69Output:
|