Để thêm vào câu trả lời của Lennart, một mảng có thể được tạo như thế này:
from array import array
float_array = array["f",values]
trong đó các giá trị có thể ở dạng tuple, danh sách hoặc np.array, nhưng không phải mảng:
values = [1,2,3]
values = [1,2,3]
values = np.array[[1,2,3],'f']
# 'i' will work here too, but if array is 'i' then values have to be int
wrong_values = array['f',[1,2,3]]
# TypeError: 'array.array' object is not callable
và đầu ra vẫn sẽ giống nhau:
print[float_array]
print[float_array[1]]
print[isinstance[float_array[1],float]]
# array['f', [1.0, 2.0, 3.0]]
# 2.0
# True
Hầu hết các phương thức cho danh sách cũng hoạt động với mảng, các phương pháp phổ biến là pop [], extend [] và append [].
Đánh giá từ các câu trả lời và nhận xét, có vẻ như cấu trúc dữ liệu mảng không phổ biến. Mặc dù vậy, tôi thích nó, giống như người ta có thể thích một bản trong danh sách.
Cấu trúc mảng có các quy tắc chặt chẽ hơn một danh sách hoặc np.array và điều này có thể làm giảm lỗi và làm cho gỡ lỗi dễ dàng hơn, đặc biệt là khi làm việc với dữ liệu số.
Các nỗ lực để chèn/nối một chiếc phao vào một mảng int sẽ ném một kiểu mẫu:
values = [1,2,3]
int_array = array["i",values]
int_array.append[float[1]]
# or int_array.extend[[float[1]]]
# TypeError: integer argument expected, got float
Do đó, giữ các giá trị có nghĩa là các số nguyên [ví dụ: danh sách các chỉ số] ở dạng mảng có thể ngăn chặn "các chỉ số danh sách: danh sách phải là số nguyên, không nổi", vì các mảng có thể được lặp lại, tương tự như NP.Array và danh sách:
int_array = array['i',[1,2,3]]
data = [11,22,33,44,55]
sample = []
for i in int_array:
sample.append[data[i]]
Khó chịu, nối thêm một mảng int vào một mảng float sẽ khiến INT trở thành một chiếc phao, mà không cần ném một ngoại lệ.
NP.Array giữ lại cùng loại dữ liệu cho các mục nhập của mình, nhưng thay vì gây ra lỗi, nó sẽ thay đổi kiểu dữ liệu của nó để phù hợp với các mục mới [thường là gấp đôi hoặc STR]:
import numpy as np
numpy_int_array = np.array[[1,2,3],'i']
for i in numpy_int_array:
print[type[i]]
#
numpy_int_array_2 = np.append[numpy_int_array,int[1]]
# still
numpy_float_array = np.append[numpy_int_array,float[1]]
# for all values
numpy_str_array = np.append[numpy_int_array,"1"]
# for all values
data = [11,22,33,44,55]
sample = []
for i in numpy_int_array_2:
sample.append[data[i]]
# no problem here, but TypeError for the other two
Điều này cũng đúng trong quá trình gán là tốt. Nếu kiểu dữ liệu được chỉ định, NP.Array sẽ, bất cứ khi nào có thể, hãy chuyển đổi các mục nhập thành kiểu dữ liệu đó:
int_numpy_array = np.array[[1,2,float[3]],'i']
# 3 becomes an int
int_numpy_array_2 = np.array[[1,2,3.9],'i']
# 3.9 gets truncated to 3 [same as int[3.9]]
invalid_array = np.array[[1,2,"string"],'i']
# ValueError: invalid literal for int[] with base 10: 'string'
# Same error as int['string']
str_numpy_array = np.array[[1,2,3],'str']
print[str_numpy_array]
print[[type[i] for i in str_numpy_array]]
# ['1' '2' '3']
#
hoặc, về bản chất:
data = [1.2,3.4,5.6]
list_1 = np.array[data,'i'].tolist[]
list_2 = [int[i] for i in data]
print[list_1 == list_2]
# True
Trong khi mảng sẽ đơn giản cho:
invalid_array = array[[1,2,3.9],'i']
# TypeError: integer argument expected, got float
Bởi vì điều này, không phải là một ý tưởng tốt để sử dụng np.array cho các lệnh cụ thể loại. Cấu trúc mảng là hữu ích ở đây. Danh sách bảo tồn kiểu dữ liệu của các giá trị.
Và đối với một cái gì đó tôi thấy khá khó khăn: Kiểu dữ liệu được chỉ định là đối số đầu tiên trong Array [], nhưng [thường] là thứ hai trong np.array []. : |
Mối quan hệ với C được đề cập ở đây: Danh sách Python so với Array - khi nào nên sử dụng?
Hãy vui vẻ khám phá!
Lưu ý: Bản chất được đánh máy và khá nghiêm ngặt của mảng dựa nhiều hơn vào C chứ không phải python, và bằng thiết kế Python không có nhiều ràng buộc cụ thể trong các chức năng của nó. Sự không phổ biến của nó cũng tạo ra một phản hồi tích cực trong công việc hợp tác và thay thế nó chủ yếu liên quan đến [int [x] cho x trong tệp]. Do đó, hoàn toàn khả thi và hợp lý để bỏ qua sự tồn tại của mảng. Nó không nên cản trở hầu hết chúng ta trong bất kỳ cách nào. : D
Lưu ý: Python không có hỗ trợ tích hợp cho các mảng, nhưng danh sách Python có thể được sử dụng thay thế. Python does not have built-in support for Arrays, but Python Lists can be used instead.
Mảng
Lưu ý: Tuy nhiên, trang này chỉ cho bạn cách sử dụng danh sách dưới dạng mảng, tuy nhiên, để hoạt động với các mảng trong Python, bạn sẽ phải nhập thư viện, như thư viện Numpy. This page shows you how to use LISTS as ARRAYS, however, to work with arrays in Python you will have to import a library, like the NumPy library.
Mảng được sử dụng để lưu trữ nhiều giá trị trong một biến duy nhất:
Thí dụ
Tạo một mảng chứa tên xe:
Ô tô = ["Ford", "Volvo", "BMW"]
Hãy tự mình thử »
Một mảng là gì?
Một mảng là một biến đặc biệt, có thể chứa nhiều hơn một giá trị tại một thời điểm.
Nếu bạn có một danh sách các mặt hàng [ví dụ danh sách các tên xe hơi], việc lưu trữ xe trong các biến đơn có thể trông như thế này:
car1 = "ford" car2 = "volvo" car3 = "bmw"
car2 = "Volvo"
car3 = "BMW"
Tuy nhiên, điều gì sẽ xảy ra nếu bạn muốn lặp qua những chiếc xe và tìm một chiếc cụ thể? Và điều gì sẽ xảy ra nếu bạn không có 3 chiếc xe, mà là 300?
Giải pháp là một mảng!
Một mảng có thể chứa nhiều giá trị dưới một tên duy nhất và bạn có thể truy cập các giá trị bằng cách tham khảo số chỉ mục.
Truy cập các yếu tố của một mảng
Bạn tham khảo một phần tử mảng bằng cách tham khảo số chỉ mục.
Thí dụ
Sửa đổi giá trị của mục mảng đầu tiên:
Ô tô [0] = "Toyota"
Hãy tự mình thử »
Một mảng là gì?
Một mảng là một biến đặc biệt, có thể chứa nhiều hơn một giá trị tại một thời điểm.
Thí dụ
Nếu bạn có một danh sách các mặt hàng [ví dụ danh sách các tên xe hơi], việc lưu trữ xe trong các biến đơn có thể trông như thế này:
car1 = "ford" car2 = "volvo" car3 = "bmw"
Hãy tự mình thử »
Một mảng là gì? The length of an array is always one more than the highest array index.
Một mảng là một biến đặc biệt, có thể chứa nhiều hơn một giá trị tại một thời điểm.
Nếu bạn có một danh sách các mặt hàng [ví dụ danh sách các tên xe hơi], việc lưu trữ xe trong các biến đơn có thể trông như thế này:
car1 = "ford" car2 = "volvo" car3 = "bmw"
Tuy nhiên, điều gì sẽ xảy ra nếu bạn muốn lặp qua những chiếc xe và tìm một chiếc cụ thể? Và điều gì sẽ xảy ra nếu bạn không có 3 chiếc xe, mà là 300?
Thí dụ
Giải pháp là một mảng!
Một mảng có thể chứa nhiều giá trị dưới một tên duy nhất và bạn có thể truy cập các giá trị bằng cách tham khảo số chỉ mục.
Hãy tự mình thử »
Một mảng là gì?
Một mảng là một biến đặc biệt, có thể chứa nhiều hơn một giá trị tại một thời điểm.
Nếu bạn có một danh sách các mặt hàng [ví dụ danh sách các tên xe hơi], việc lưu trữ xe trong các biến đơn có thể trông như thế này:
Thí dụ
car1 = "ford" car2 = "volvo" car3 = "bmw"
Tuy nhiên, điều gì sẽ xảy ra nếu bạn muốn lặp qua những chiếc xe và tìm một chiếc cụ thể? Và điều gì sẽ xảy ra nếu bạn không có 3 chiếc xe, mà là 300?
Hãy tự mình thử »
Một mảng là gì? The list's
values = [1,2,3]
values = [1,2,3]
values = np.array[[1,2,3],'f']
# 'i' will work here too, but if array is 'i' then values have to be int
wrong_values = array['f',[1,2,3]]
# TypeError: 'array.array' object is not callable
5 method only removes the first occurrence of the specified value.Một mảng là một biến đặc biệt, có thể chứa nhiều hơn một giá trị tại một thời điểm.
Nếu bạn có một danh sách các mặt hàng [ví dụ danh sách các tên xe hơi], việc lưu trữ xe trong các biến đơn có thể trông như thế này:
Giải pháp là một mảng! | Một mảng có thể chứa nhiều giá trị dưới một tên duy nhất và bạn có thể truy cập các giá trị bằng cách tham khảo số chỉ mục. |
Truy cập các yếu tố của một mảng | Bạn tham khảo một phần tử mảng bằng cách tham khảo số chỉ mục. |
Sửa đổi giá trị của mục mảng đầu tiên: | Ô tô [0] = "Toyota" |
Chiều dài của một mảng | Sử dụng phương thức len[] để trả về độ dài của một mảng [số lượng phần tử trong một mảng]. |
Trả về số lượng phần tử trong mảng 0: | x = len [ô tô] |
Lưu ý: Độ dài của một mảng luôn nhiều hơn một chỉ số mảng cao nhất. | Vòng lặp các yếu tố mảng |
Bạn có thể sử dụng vòng lặp 1 để lặp qua tất cả các phần tử của một mảng. | Thêm các phần tử mảng |
Bạn có thể sử dụng phương thức 2 để thêm một phần tử vào một mảng. | Thêm một phần tử nữa vào mảng 0: |
ô tô.append ["Honda"] | Loại bỏ các yếu tố mảng |
Bạn có thể sử dụng phương thức 4 để xóa một phần tử khỏi mảng. | Bạn cũng có thể sử dụng phương thức 5 để loại bỏ một phần tử khỏi mảng. |
Xóa phần tử có giá trị "Volvo": | Cars.Remove ["Volvo"] |
Lưu ý: Phương thức
5 của danh sách chỉ loại bỏ sự xuất hiện đầu tiên của giá trị được chỉ định. Python does not have built-in support for Arrays, but Python Lists can be used instead.values = [1,2,3]
values = [1,2,3]
values = np.array[[1,2,3],'f']
# 'i' will work here too, but if array is 'i' then values have to be int
wrong_values = array['f',[1,2,3]]
# TypeError: 'array.array' object is not callable