2012-05-23 19 views

Odpowiedz

72

Jak to:

numrows = len(input) # 3 rows in your example 
numcols = len(input[0]) # 2 columns in your example 

Zakładając, że wszyscy się na listach podrzędnych mają taką samą długość (to znaczy, że nie jest to postrzępione array).

+2

Tak długo, jak to nie jest poszarpana tablica, jest to idealne rozwiązanie. – Makoto

+2

@Makoto To prawda. Dodałem to założenie do mojej odpowiedzi. –

+0

yo, chcę znaleźć sumę wszystkich elementów w tej tablicy def def1 (wejście): sum = 0 dla wiersza w zakresie (len (wejście) -1): dla kolumny w zakresie (len (wejście [0] ]) - 1): suma = suma + wejście [rząd] [kolumna] suma powrotu druku sum1 ([[1, 2], [3, 4], [5, 6]]) Wyświetla 4 zamiast 21 (1 + 2 + 3 + 4 + 5 + 6 = 21). Gdzie jest mój błąd? –

20

Można użyć numpy.shape.

import numpy as np 
x = np.array([[1, 2],[3, 4],[5, 6]]) 

Wynik:

>>> x 
array([[1, 2], 
     [3, 4], 
     [5, 6]]) 
>>> np.shape(x) 
(3, 2) 

pierwszej wartości w krotce znajduje się liczba rzędów = 3; Druga wartość w krotce znajduje się liczba kolumn = 2.

+0

Dziękuję, nie chciałem używać numpy do tej rzeczy. – urgeo

8

Zakładając wejściowej [rzędu] [col]

rows = len(input) 
    cols = map(len, input) #list of column lengths 
10

Ponadto prawidłowy sposób do zliczania całkowitej liczby elementu będzie:

sum(len(x) for x in input) 
+0

Świetnie, to było dokładnie to, czego potrzebowałem! W moim przypadku mogę liczyć wszystkie elementy listy do 2 stopnia: suma (len (x), jeśli isinstance (x, lista) jeszcze 1 dla x w some_list) – Inaki