2008-10-09 81 views
91

Làm cách nào để đếm số phần tử trong một mảng, vì trái với mảng array.count (chuỗi) không tính tất cả các phần tử trong mảng, nó chỉ tìm kiếm số lần xuất hiện của chuỗi .Đếm các phần tử mảng trong Python

+0

Đây không thực sự là bản sao của các yếu tố đếm trong danh sách, vì mảng có thể có chiều cao hơn, phải không? 'Len()' của một mảng không phải là số phần tử trong mảng trừ khi mảng là 1D. Bạn có thể lập luận rằng một danh sách các danh sách cũng là chiều cao hơn, nhưng có một ưu tiên rõ ràng hơn cho danh sách cấp cao nhất. Đối với danh sách cấp cao nhất này, số lượng các phần tử chỉ là 'len()' của nó vì nó về cơ bản là 1D. –

Trả lời

212

Phương thức len() trả về số phần tử trong danh sách.

Cú pháp:

len(myArray) 

Ví dụ:

myArray = [1, 2, 3] 
len(myArray) 

Output:

3 

+0

Bạn có thể giải thích câu trả lời của mình không;) –

+0

Điều này chỉ hoạt động đối với danh sách hoặc mảng phẳng, một chiều, nhưng 'in len ([[0, 0], [0, 0]])' xuất hiện dưới dạng 2, 'len (mảng ([[0, 0], [0, 0]]))'. –

3

Hoặc,

myArray.__len__() 

nếu bạn muốn trở nên mềm hơn; "len (myArray)" dễ nhập hơn! :)

+2

Đó là một Yuk xác định. – UnkwnTech

+0

@Gregg Lind, Điều này không giới thiệu một điều kiện chủng tộc. (Đó là, tuy nhiên, như yucky như nó được.) –

+0

Tình trạng cuộc đua là giữa tôi và một poster! Lưu ý * câu trả lời còn lại của tôi * xuống dưới *! –

24

len là hàm tích hợp gọi hàm thành viên của đối tượng vùng chứa đã cho là __len__ để nhận số lượng phần tử trong đối tượng.

Chức năng được bao bọc với dấu gạch dưới kép thường là "các phương pháp đặc biệt" triển khai một trong các giao diện chuẩn trong Python (vùng chứa, số, v.v ...). Các phương thức đặc biệt được sử dụng thông qua đường cú pháp (tạo đối tượng, lập chỉ mục vùng chứa và cắt, truy cập thuộc tính, các hàm dựng sẵn, v.v.).

Sử dụng obj.__len__() sẽ không phải là cách chính xác để sử dụng phương pháp đặc biệt, nhưng tôi không thấy lý do tại sao các phương thức khác được điều chỉnh quá nhiều.

+0

Đặc biệt khi cả hai chúng tôi nói rằng đó là hình thức xấu. Hiểu được chiều dài "thực sự" nào quan trọng trong quyền riêng của nó. –

1

Trước khi tôi nhìn thấy điều này, tôi tự nghĩ, "Tôi cần phải thực hiện một cách để làm điều này!"

for tempVar in arrayName: tempVar+=1 

Và sau đó tôi nghĩ, "Phải có cách đơn giản hơn để thực hiện việc này". và tôi đã đúng.

len(arrayName)

11

Nếu bạn có một mảng đa chiều, len() có thể không cung cấp cho bạn những giá trị mà bạn đang tìm kiếm. Ví dụ:

a = np.arange(10).reshape(2, 5) 
print len(a) == 2 

Khối mã này sẽ trả về true, cho bạn biết kích thước của mảng là 2. Tuy nhiên, thực tế có 10 phần tử trong mảng 2D này. Trong trường hợp của mảng đa chiều, len() cho phép bạn theo chiều dài của chiều đầu tiên của mảng tức là

len(a) == np.shape(a)[0] 

Để có được số phần tử trong một mảng đa chiều của hình dạng tùy ý:

size = 1 
for dim in np.shape(a): size *= dim 
+0

Điều này có vẻ thực sự hữu ích, nhưng np có nghĩa là gì để được khởi tạo? Nếu tôi khởi tạo nó như một danh sách trống, thì python nói đối tượng 'list 'không có thuộc tính' arrang'' – russellmania

+1

@russellmania' import numpy as np' – dexteritas

Các vấn đề liên quan