Hướng dẫn why does python use lists instead of arrays? - tại sao python sử dụng danh sách thay vì mảng?

Về cơ bản, các danh sách Python rất linh hoạt và có thể chứa các dữ liệu hoàn toàn không đồng nhất, tùy ý và chúng có thể được thêm vào rất hiệu quả, trong thời gian khấu hao. Nếu bạn cần thu nhỏ và phát triển danh sách của bạn hiệu quả về thời gian và không gặp rắc rối, chúng là con đường để đi. Nhưng chúng sử dụng nhiều không gian hơn các mảng C, một phần vì mỗi mục trong danh sách yêu cầu xây dựng một đối tượng Python riêng lẻ, ngay cả đối với dữ liệu có thể được biểu diễn bằng các loại C đơn giản (ví dụ:

[3, 6, 9, 12]

2 hoặc
[3, 6, 9, 12]

3).a lot more space than C arrays, in part because each item in the list requires the construction of an individual Python object, even for data that could be represented with simple C types (e.g.
[3, 6, 9, 12]

2 or
[3, 6, 9, 12]

3).

Loại

[3, 6, 9, 12]

4, mặt khác, chỉ là một trình bao bọc mỏng trên các mảng C. Nó chỉ có thể chứa dữ liệu đồng nhất (có nghĩa là tất cả cùng loại) và do đó, nó chỉ sử dụng
[3, 6, 9, 12]

5 byte bộ nhớ. Hầu hết, bạn nên sử dụng nó khi bạn cần phơi một mảng C thành một phần mở rộng hoặc cuộc gọi hệ thống (ví dụ:
[3, 6, 9, 12]

6 hoặc
[3, 6, 9, 12]

7).

[3, 6, 9, 12]

4 cũng là một cách hợp lý để thể hiện một chuỗi có thể thay đổi trong Python 2.x (
[3, 6, 9, 12]

9). Tuy nhiên, Python 2.6+ và 3.x cung cấp một chuỗi byte có thể thay đổi là
import array as arr
0.mutable string in Python 2.x (
[3, 6, 9, 12]

9). However, Python 2.6+ and 3.x offer a mutable byte string as
import array as arr
0.

Tuy nhiên, nếu bạn muốn làm toán trên một mảng dữ liệu số đồng nhất, thì tốt hơn hết là bạn nên sử dụng Numpy, điều này có thể tự động vector hóa các hoạt động trên các mảng đa chiều phức tạp.math on a homogeneous array of numeric data, then you're much better off using NumPy, which can automatically vectorize operations on complex multi-dimensional arrays.

Để làm cho một câu chuyện dài ngắn:

[3, 6, 9, 12]

4 rất hữu ích khi bạn cần một mảng dữ liệu C đồng nhất vì những lý do khác ngoài việc làm toán.:
[3, 6, 9, 12]

4 is useful when you need a homogeneous C array of data for reasons other than doing math.

Cả hai danh sách và mảng đều được sử dụng để lưu trữ dữ liệu trong Python. Hơn nữa, cả hai cấu trúc dữ liệu cho phép lập chỉ mục, cắt và lặp lại. Vậy sự khác biệt giữa một mảng và một danh sách trong Python là gì? Trong bài viết này, chúng tôi sẽ giải thích chi tiết khi nào nên sử dụng mảng Python so với danh sách.

Python có rất nhiều cấu trúc dữ liệu khác nhau với các tính năng và chức năng khác nhau. Các cấu trúc dữ liệu tích hợp của nó bao gồm danh sách, bộ dữ liệu, bộ và từ điển. Tuy nhiên, đây không phải là một danh sách đầy đủ các cấu trúc dữ liệu có sẵn trong Python. Một số cấu trúc dữ liệu bổ sung có thể được nhập từ các mô -đun hoặc gói khác nhau.lists, tuples, sets, and dictionaries. However, this is not an exhaustive list of the data structures available in Python. Some additional data structures can be imported from different modules or packages.

Một cấu trúc dữ liệu mảng thuộc danh mục "phải nhập". Để sử dụng một mảng trong Python, bạn sẽ cần nhập cấu trúc dữ liệu này từ NumpyPackage hoặc ArrayModule.NumPy package or the array module.

Và đó là sự khác biệt đầu tiên giữa danh sách và mảng. Trước khi đi sâu hơn vào sự khác biệt giữa hai cấu trúc dữ liệu này, hãy xem xét các tính năng và chức năng của danh sách và mảng.

Danh sách trong Python là gì?

Danh sách là một cấu trúc dữ liệu được tích hợp vào Python và chứa một bộ sưu tập các mục. Danh sách có một số đặc điểm quan trọng:list is a data structure that's built into Python and holds a collection of items. Lists have a number of important characteristics:

  • Danh sách các mục được đặt trong các dấu ngoặc vuông, như [Item1, Item2, Item3] này.
  • Danh sách được đặt hàng - tức là các mục trong danh sách xuất hiện theo một thứ tự cụ thể. Điều này cho phép chúng tôi sử dụng một chỉ mục để truy cập vào bất kỳ mục nào.ordered – i.e. the items in the list appear in a specific order. This enables us to use an index to access to any item.
  • Danh sách có thể thay đổi, có nghĩa là bạn có thể thêm hoặc xóa các mục sau khi tạo danh sách.mutable, which means you can add or remove items after a list's creation.
  • Danh sách các yếu tố không cần phải là duy nhất. Có thể sao chép mục, vì mỗi phần tử có vị trí riêng biệt và có thể được truy cập riêng thông qua chỉ mục.do not need to be unique. Item duplication is possible, as each element has its own distinct place and can be accessed separately through the index.
  • Các yếu tố có thể thuộc các loại dữ liệu khác nhau: bạn có thể kết hợp các chuỗi, số nguyên và các đối tượng trong cùng một danh sách.different data types: you can combine strings, integers, and objects in the same list.

Danh sách rất dễ dàng được tạo ra trong Python:

list = [3, 6, 9, 12]
print(list)
print(type(list))
[3, 6, 9, 12]

Danh sách Python được sử dụng ở khắp mọi nơi, vì chúng là một công cụ tuyệt vời để lưu một chuỗi các mục và lặp lại nó.

Một mảng trong Python là gì?

Một mảng cũng là một cấu trúc dữ liệu lưu trữ một tập hợp các mục. Giống như danh sách, các mảng được đặt hàng, có thể thay đổi, được đặt trong ngoặc vuông và có thể lưu trữ các vật phẩm không đơn độc.array is also a data structure that stores a collection of items. Like lists, arrays are ordered, mutable, enclosed in square brackets, and able to store non-unique items.

Nhưng khi nói đến khả năng lưu trữ các loại dữ liệu khác nhau của mảng, câu trả lời không đơn giản. Nó phụ thuộc vào loại mảng được sử dụng.

Để sử dụng các mảng trong Python, bạn cần nhập mô -đun mảng hoặc gói numpy.array module or a NumPy package.

import array as arr
import numpy as np

Mô -đun mảng Python yêu cầu tất cả các phần tử mảng phải cùng loại. Ngoài ra, để tạo một mảng, bạn sẽ cần chỉ định loại giá trị. Trong mã bên dưới, "I" biểu thị rằng tất cả các phần tử trong Array_1 đều là số nguyên:array module requires all array elements to be of the same type. Moreover, to create an array, you'll need to specify a value type. In the code below, the "i" signifies that all elements in array_1 are integers:

array_1 = arr.array("i", [3, 6, 9, 12])
print(array_1)
print(type(array_1))
array('i', [3, 6, 9, 12])

Mặt khác, các mảng Numpy hỗ trợ các loại dữ liệu khác nhau. Để tạo một mảng numpy, bạn chỉ cần chỉ định các mục (tất nhiên là được đặt trong ngoặc vuông):NumPy arrays support different data types. To create a NumPy array, you only need to specify the items (enclosed in square brackets, of course):

array_2 = np.array(["numbers", 3, 6, 9, 12])
print (array_2)
print(type(array_2))
['numbers' '3' '6' '9' '12']

Như bạn có thể thấy, Array_2 chứa một mục của loại chuỗi (tức là, "số") và bốn số nguyên.

Vậy sự khác biệt là gì?

Bây giờ chúng ta đã biết các định nghĩa và tính năng của họ, chúng ta có thể nói về sự khác biệt giữa các danh sách và mảng trong Python:

  • Mảng cần được khai báo. Danh sách không, vì chúng được xây dựng thành Python. Trong các ví dụ trên, bạn đã thấy rằng các danh sách được tạo bằng cách chỉ kèm theo một chuỗi các phần tử vào dấu ngoặc vuông. Mặt khác, tạo một mảng yêu cầu một chức năng cụ thể từ mô -đun mảng (tức là, mảng.Array ()) hoặc gói numpy (tức là, numpy.array ()). Bởi vì điều này, danh sách được sử dụng thường xuyên hơn các mảng., since they are built into Python. In the examples above, you saw that lists are created by simply enclosing a sequence of elements into square brackets. Creating an array, on the other hand, requires a specific function from either the array module (i.e., array.array()) or NumPy package (i.e., numpy.array()). Because of this, lists are used more often than arrays.
  • Mảng có thể lưu trữ dữ liệu rất nhỏ gọn và hiệu quả hơn để lưu trữ một lượng lớn dữ liệu. and are more efficient for storing large amounts of data.
  • Mảng là tuyệt vời cho các hoạt động số; Danh sách không thể xử lý trực tiếp các hoạt động toán học. Ví dụ: bạn có thể chia từng phần tử của một mảng cho cùng một số chỉ với một dòng mã. Nếu bạn thử tương tự với một danh sách, bạn sẽ gặp lỗi.; lists cannot directly handle math operations. For example, you can divide each element of an array by the same number with just one line of code. If you try the same with a list, you'll get an error.
array = np.array([3, 6, 9, 12])
division = array/3
print(division)
print (type(division))
[1. 2. 3. 4.]

____10
[3, 6, 9, 12]

1

Tất nhiên, có thể thực hiện một hoạt động toán học với một danh sách, nhưng nó kém hiệu quả hơn nhiều:

Hướng dẫn why does python use lists instead of arrays? - tại sao python sử dụng danh sách thay vì mảng?

Từ các cấu trúc dữ liệu Python trong khóa học thực tế

Vì vậy, khi nào bạn nên sử dụng một danh sách và khi nào bạn nên sử dụng một mảng?

  • Nếu bạn cần lưu trữ một chuỗi các mục tương đối ngắn và bạn không có kế hoạch thực hiện bất kỳ hoạt động toán học nào với nó, một danh sách là lựa chọn ưa thích. Cấu trúc dữ liệu này sẽ cho phép bạn lưu trữ một chuỗi các mục được đặt hàng, có thể thay đổi và lập chỉ mục mà không cần nhập bất kỳ mô -đun hoặc gói bổ sung nào.list is the preferred choice. This data structure will allow you to store an ordered, mutable, and indexed sequence of items without importing any additional modules or packages.
  • Nếu bạn có một chuỗi các mục rất dài, hãy xem xét sử dụng một mảng. Cấu trúc này cung cấp lưu trữ dữ liệu hiệu quả hơn.array. This structure offers more efficient data storage.
  • Nếu bạn có kế hoạch thực hiện bất kỳ hoạt động số nào với sự kết hợp của các mục, hãy sử dụng một mảng. Phân tích dữ liệu và khoa học dữ liệu phụ thuộc rất nhiều vào các mảng (chủ yếu là numpy).array. Data analytics and data science rely heavily on (mostly NumPy) arrays.

Thời gian để thực hành mảng Python và danh sách!

Tuyệt quá! Bây giờ bạn đã biết sự khác biệt giữa một mảng và một danh sách trong Python. Bạn cũng biết lựa chọn nào cho một chuỗi các mặt hàng. Bây giờ là lúc để thực hành!

Nếu bạn muốn thúc đẩy sự hiểu biết của mình về cấu trúc dữ liệu và thực hành hơn 100 bài tập tương tác, hãy xem các cấu trúc dữ liệu Python của LearnPython.com trong thực tế. Nó sẽ giúp bạn cảm thấy như một chuyên gia khi xử lý danh sách, danh sách lồng nhau, bộ dữ liệu, bộ và từ điển.

Danh sách có tốt hơn mảng trong Python không?

Một mảng nhanh hơn một danh sách trong Python vì tất cả các yếu tố được lưu trữ trong một mảng là đồng nhất, tức là, chúng có cùng loại dữ liệu trong khi một danh sách chứa các yếu tố không đồng nhất. Hơn nữa, các mảng Python được triển khai trong C, giúp nó nhanh hơn rất nhiều so với các danh sách được tích hợp trong chính Python. since all the elements stored in an array are homogeneous i.e., they have the same data type whereas a list contains heterogeneous elements. Moreover, Python arrays are implemented in C which makes it a lot faster than lists that are built-in in Python itself.

Tại sao các mảng Python được gọi là danh sách?

Các mảng thường chứa các yếu tố của cùng một kiểu dữ liệu.Nhưng, các danh sách, mặt khác, có thể chứa các yếu tố của tất cả các kiểu dữ liệu.Chúng được đặt tên theo danh sách loại dữ liệu trừu tượng, không phải danh sách được liên kết.They're named after the list abstract data type, not linked lists.

Có phải danh sách Python chỉ là mảng?

Trong Cpython, danh sách là các mảng của con trỏ.Các triển khai khác của Python có thể chọn lưu trữ chúng theo những cách khác nhau.lists are arrays of pointers. Other implementations of Python may choose to store them in different ways.

Danh sách hoặc mảng nào nhanh hơn trong Python?

Các mảng Numpy nhanh hơn danh sách Python vì những lý do sau: Một mảng là một tập hợp các loại dữ liệu đồng nhất được lưu trữ trong các vị trí bộ nhớ liên tục.Mặt khác, một danh sách trong Python là một tập hợp các loại dữ liệu không đồng nhất được lưu trữ trong các vị trí bộ nhớ không liên tục. because of the following reasons: An array is a collection of homogeneous data-types that are stored in contiguous memory locations. On the other hand, a list in Python is a collection of heterogeneous data types stored in non-contiguous memory locations.