Bạn có thể có một danh sách các đối tượng trong python không?

Sử dụng danh sách Python để lưu trữ dữ liệu trong các hàng một chiều, truy cập chúng theo chỉ mục và sắp xếp chúng theo bất kỳ cách nào bạn muốn

Bởi Serdar Yegulalp

Nhà văn cao cấp, InfoWorld.

Hình ảnh Monsitj / Getty

Mục lục

  • Khái niệm cơ bản về danh sách Python
  • Lập chỉ mục danh sách Python
  • Thêm và xóa các mục danh sách Python
  • Cắt một danh sách Python
  • Sắp xếp danh sách Python
  • Danh sách Python không phải là mảng

Cho xem nhiều hơn

Python đi kèm với một tập hợp các kiểu dữ liệu tích hợp sẵn giúp thực hiện các thao tác sắp xếp dữ liệu phổ biến dễ dàng. Trong số đó có danh sách, một loại bộ sưu tập đơn giản nhưng linh hoạt. Với danh sách Python, bạn có thể nhóm các đối tượng Python lại với nhau trong một hàng một chiều, cho phép truy cập các đối tượng theo vị trí, thêm, xóa, sắp xếp và chia nhỏ

[ Cũng trên InfoWorld. 4 tính năng mạnh mẽ Python vẫn còn thiếu]

Khái niệm cơ bản về danh sách Python

Xác định danh sách trong Python thật dễ dàng — chỉ cần sử dụng cú pháp dấu ngoặc để chỉ ra các mục trong danh sách

list_of_ints = [1, 2, 3]

Các mục trong danh sách không nhất thiết phải cùng loại. Chúng có thể là bất kỳ đối tượng Python nào. [Ở đây, giả sử 

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
1 là một hàm. ]

list_of_objects = ["One", TWO, Three, {"Four":4}, None]

Lưu ý rằng việc có các đối tượng hỗn hợp trong danh sách có thể có ý nghĩa đối với việc sắp xếp danh sách. Chúng ta sẽ đi sâu vào vấn đề này sau

Lý do lớn nhất để sử dụng danh sách là có thể tìm các đối tượng theo vị trí của chúng trong danh sách. Để làm điều này, bạn sử dụng ký hiệu chỉ mục của Python. một số trong ngoặc, bắt đầu từ 0, cho biết vị trí của mục trong danh sách

Đối với ví dụ trên,

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
2 mang lại
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
3.
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
4 sản lượng
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
5.
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
6 sẽ là đối tượng 
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
7

Lập chỉ mục danh sách Python

Nếu bạn sử dụng số nguyên dương cho chỉ mục, số nguyên cho biết vị trí của mục cần tìm. Nhưng nếu bạn sử dụng số nguyên âm, thì số nguyên này cho biết vị trí bắt đầu từ cuối danh sách. Ví dụ: sử dụng chỉ mục

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
8 là một cách thuận tiện để lấy mục cuối cùng từ danh sách bất kể kích thước của danh sách

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
9 sản lượng 
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
10.
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
11 sản lượng 
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
7

Bạn cũng có thể sử dụng một biến số nguyên làm chỉ mục của mình. Nếu 

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
13, 
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
14 được 1, v.v.

Thêm và xóa các mục danh sách Python

Python có một số cách để bạn có thể thêm hoặc xóa các mục khỏi danh sách

  • list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    15 chèn một mục vào cuối danh sách. Ví dụ:
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    16 sẽ biến 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    17 vào danh sách 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    18. Appends là nhanh chóng và hiệu quả;
  • list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    19 xóa và trả lại mục cuối cùng khỏi danh sách. Nếu chúng tôi chạy
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    10 trên bản gốc 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    17, thì x sẽ chứa giá trị 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    10. [Tuy nhiên, bạn không cần phải gán kết quả của 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    19 cho một giá trị nếu bạn không cần. ] 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    19thao tác cũng nhanh và hiệu quả
  • list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    15 chèn một mục vào vị trí tùy ý trong danh sách. Ví dụ: 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    16 sẽ biến 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    17 thành
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    18. Lưu ý rằng bạn chèn càng gần phía trước danh sách, thao tác này sẽ càng chậm, mặc dù bạn sẽ không thấy nhiều sự chậm lại trừ khi danh sách của bạn có nhiều nghìn phần tử hoặc bạn đang thực hiện thao tác chèn trong một vòng lặp chặt chẽ
  • list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    19 xóa mục tại chỉ mục 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    10. Vì vậy, 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    11 sẽ xóa mục ở chỉ mục 0. Một lần nữa, bạn càng ở gần phía trước danh sách, thì thao tác này có thể càng chậm.
  • list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    12 xóa một mục khỏi danh sách, nhưng không dựa trên chỉ mục của nó. Thay vào đó,
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    13 xóa lần xuất hiện đầu tiên của đối tượng bạn chỉ định, tìm kiếm từ đầu danh sách xuống. Đối với 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    14, 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    15 đầu tiên sẽ bị xóa, dẫn đến danh sách 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    16. Hoạt động này cũng có thể làm chậm đối với một danh sách lớn, vì về mặt lý thuyết, nó phải duyệt qua toàn bộ danh sách để hoạt động

Cắt một danh sách Python

Các danh sách có thể được chia thành các danh sách mới, một quy trình được gọi là cắt. Cú pháp lát cắt Python cho phép bạn chỉ định phần nào của danh sách cần loại bỏ và cách thao tác với phần đã loại bỏ

Ở trên, bạn đã thấy cách sử dụng ký hiệu ngoặc đơn để lấy một mục từ danh sách.

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
17 chẳng hạn. Các lát sử dụng một biến thể của cùng một ký hiệu chỉ mục [và tuân theo các quy tắc lập chỉ mục giống nhau].
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
18

  • list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    19 là vị trí trong danh sách để bắt đầu lát cắt.  
  • list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    10 là vị trí trong danh sách mà chúng tôi ngừng cắt. Nói cách khác, vị trí đó và mọi thứ sau vị trí đó bị bỏ qua
  • list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    11 là chỉ báo tùy chọn "mọi phần tử thứ n" cho lát cắt. Theo mặc định, đây là 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    3, vì vậy, lát cắt giữ lại mọi phần tử trong danh sách mà nó cắt ra. Đặt
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    11 thành
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    5 và bạn sẽ chọn từng phần tử thứ hai, v.v.

Dưới đây là một số ví dụ. Xem xét danh sách này

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
1

[Lưu ý rằng chúng ta đang dừng ở chỉ số 4, không phải chỉ số 5. ]

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
1

Nếu bạn bỏ qua một chỉ mục lát cụ thể, Python sẽ mặc định. Bỏ qua chỉ mục bắt đầu và Python đảm nhận phần đầu của danh sách

slice_list[. 5] = [1, 2, 3, 4, 5]

Bỏ qua chỉ mục dừng và Python đảm nhận phần cuối của danh sách

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
1

Phần tử 

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
11 cũng có thể là âm. Điều này cho phép chúng tôi lấy các lát cắt là bản sao đảo ngược của bản gốc

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
1

Lưu ý rằng bạn có thể cắt ngược lại bằng cách sử dụng các chỉ mục bắt đầu và dừng đi ngược lại, không chuyển tiếp

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
1

Ngoài ra, xin lưu ý rằng các phần của danh sách là bản sao của danh sách gốc. Danh sách ban đầu không thay đổi.  

[ Cũng trên InfoWorld. Các khóa học khoa học dữ liệu miễn phí tốt nhất trong thời gian cách ly ]

Sắp xếp danh sách Python

Python cung cấp hai cách để sắp xếp danh sách. Bạn có thể tạo danh sách mới, được sắp xếp từ danh sách cũ hoặc bạn có thể sắp xếp tại chỗ một danh sách hiện có. Các tùy chọn này có các hành vi khác nhau và các tình huống sử dụng khác nhau

Để tạo danh sách mới, được sắp xếp, hãy sử dụng hàm 

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
16 trên danh sách cũ

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
3

Thao tác này sẽ sắp xếp nội dung của danh sách bằng các phương thức sắp xếp mặc định của Python. Đối với chuỗi, mặc định là thứ tự bảng chữ cái; . Lưu ý rằng nội dung của danh sách cần nhất quán để điều này hoạt động. Chẳng hạn, bạn không thể sắp xếp hỗn hợp số nguyên và chuỗi, nhưng bạn có thể sắp xếp danh sách toàn số nguyên hoặc toàn chuỗi. Nếu không, bạn sẽ nhận được 

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
17 trong thao tác sắp xếp

Nếu bạn muốn sắp xếp đảo ngược danh sách, hãy chuyển tham số 

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
18 

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
6

Một cách khác để sắp xếp, sắp xếp tại chỗ, thực hiện thao tác sắp xếp trực tiếp trên danh sách ban đầu. Để thực hiện việc này, hãy sử dụng phương thức 

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
19 của danh sách

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
8

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
19 cũng lấy 
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
18 làm tham số, cho phép bạn sắp xếp ngược lại

Cả 

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
16 và 
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
19 cũng có tham số 
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
14 . Tham số
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
14 cho phép bạn cung cấp một chức năng có thể được sử dụng để thực hiện thao tác sắp xếp tùy chỉnh. Khi danh sách được sắp xếp, mỗi phần tử được chuyển đến hàm 
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
14 và giá trị kết quả được sử dụng để sắp xếp. Ví dụ: nếu chúng tôi có một hỗn hợp các số nguyên và chuỗi và muốn sắp xếp chúng, chúng tôi có thể sử dụng 
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
14 như thế này

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
0

Lưu ý rằng mã này sẽ không chuyển đổi từng phần tử của danh sách thành một số nguyên. Thay vào đó, nó sẽ sử dụng giá trị số nguyên của từng mục làm giá trị sắp xếp. Ngoài ra, hãy lưu ý cách chúng tôi sử dụng khối 

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
18 để bẫy bất kỳ giá trị nào không dịch rõ ràng thành một số nguyên và trả về 
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
19 cho chúng theo mặc định

Danh sách Python không phải là mảng

Một điều quan trọng cần biết về danh sách trong Python là chúng không phải là "mảng". ” Các ngôn ngữ khác, như C, có cấu trúc một chiều hoặc đa chiều được gọi là mảng chấp nhận các giá trị của một loại duy nhất. Danh sách không đồng nhất;

Hơn nữa, có một loại 

list_of_objects = ["One", TWO, Three, {"Four":4}, None]
30 riêng biệt trong Python. Python
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
30 được thiết kế để mô phỏng hành vi của một mảng trong C và chủ yếu nhằm mục đích cho phép Python hoạt động với các mảng C. Loại 
list_of_objects = ["One", TWO, Three, {"Four":4}, None]
30 hữu ích trong những trường hợp đó, nhưng trong hầu hết mọi trường hợp thuần Python, bạn sẽ muốn sử dụng danh sách

Khi nào nên sử dụng danh sách Python [và khi nào thì không]

Vậy khi nào danh sách Python hữu ích nhất?

  • Bạn cần nhanh chóng tìm thấy mọi thứ theo vị trí của chúng trong bộ sưu tập. Việc truy cập vào bất kỳ vị trí nào trong danh sách đều mất cùng một khoảng thời gian, do đó, không có hình phạt nào về hiệu suất khi tìm kiếm ngay cả mục thứ một triệu trong danh sách
  • Bạn đang thêm và xóa vào bộ sưu tập chủ yếu bằng cách thêm vào cuối hoặc xóa khỏi cuối, theo cách của một ngăn xếp. Một lần nữa, các thao tác này mất cùng một khoảng thời gian bất kể độ dài của danh sách

Danh sách Python ít phù hợp hơn khi

  • Bạn muốn tìm một mục trong danh sách, nhưng bạn không biết vị trí của nó. Bạn có thể làm điều này với thuộc tính 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    33. Chẳng hạn, bạn có thể sử dụng 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    34 để tìm chỉ số của lần xuất hiện đầu tiên của số 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    3 trong 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    17. Tốc độ không phải là vấn đề nếu danh sách của bạn chỉ dài một vài mục, nhưng đối với danh sách dài hàng nghìn mục, điều đó có nghĩa là Python phải tìm kiếm toàn bộ danh sách. Đối với trường hợp như thế này, hãy sử dụng từ điển, trong đó có thể tìm thấy từng mục bằng một khóa và thời gian tra cứu sẽ giống nhau cho từng giá trị
  • Bạn muốn thêm bớt đồ ở vị trí nào nhưng cuối cùng. Mỗi lần bạn thực hiện việc này, Python phải di chuyển mọi mục khác sau mục đã thêm hoặc xóa. Danh sách càng dài thì vấn đề về hiệu suất càng lớn. Đối tượng 
    list_of_objects = ["One", TWO, Three, {"Four":4}, None]
    37 của Python sẽ phù hợp hơn nếu bạn muốn tự do thêm hoặc xóa các đối tượng từ đầu hoặc cuối danh sách

Cách làm được nhiều hơn với Python

  • Cách đóng gói ứng dụng Python với BeeWare Briefcase
  • Cách chạy Anaconda song song với những con Trăn khác
  • Cách sử dụng lớp dữ liệu Python
  • Bắt đầu với async trong Python
  • Cách sử dụng asyncio trong Python
  • 3 bước để đại tu Python không đồng bộ
  • Cách sử dụng PyInstaller để tạo các tệp thực thi Python
  • hướng dẫn Cython. Cách tăng tốc Python
  • Cách cài đặt Python một cách thông minh
  • Cách quản lý dự án Python với Thơ
  • Cách quản lý dự án Python với Pipenv
  • Virtualenv và venv. Giải thích môi trường ảo Python
  • Python virtualenv và venv nên và không nên làm
  • Giải thích luồng Python và các quy trình con
  • Cách sử dụng trình gỡ lỗi Python
  • Cách sử dụng timeit để cấu hình mã Python
  • Cách sử dụng cProfile để cấu hình mã Python
  • Cách chuyển đổi Python sang JavaScript [và ngược lại]

Có liên quan

  • con trăn
  • Phát triển phần mềm

Serdar Yegulalp là một nhà văn cao cấp tại InfoWorld, tập trung vào học máy, container hóa, devops, hệ sinh thái Python và đánh giá định kỳ

Bạn có thể có một mảng đối tượng trong Python không?

Mô-đun mảng trong Python định nghĩa một đối tượng được biểu diễn trong một mảng . Đối tượng này chứa các kiểu dữ liệu cơ bản như số nguyên, dấu phẩy động, ký tự. Sử dụng mô-đun mảng, một mảng có thể được khởi tạo bằng cú pháp sau. ví dụ 1. In một mảng các giá trị với mã loại, int.

Danh sách Python có thể chứa bao nhiêu đối tượng?

Theo mã nguồn, kích thước tối đa của danh sách là PY_SSIZE_T_MAX/sizeof[PyObject*] . Trên hệ thống 32 bit thông thường, đây là [4294967295/2]/4 hoặc 536870912. Do đó, kích thước tối đa của danh sách python trên hệ thống 32 bit là 536.870.912 phần tử.

Bạn có thể có các đối tượng trong Python không?

Các lớp và đối tượng Python . Hầu hết mọi thứ trong Python đều là đối tượng , với các thuộc tính và phương thức của nó. Lớp giống như một hàm tạo đối tượng hoặc "bản thiết kế" để tạo đối tượng.

Chủ Đề