Is arr. len () preferowany sposób uzyskania długości tablicy w Pythonie?
W Pythonie , czy jest to jedyny sposób na uzyskanie liczby elementów?
arr.__len__()
Jeśli tak, to skąd ta dziwna składnia? 7 answers
my_list = [1,2,3,4,5]
len(my_list)
# 5
To samo działa dla krotek:
my_tuple = (1,2,3,4,5)
len(my_tuple)
# 5
I ciągów, które są tak naprawdę tylko tablicami znaków:
my_string = 'hello world'
len(my_string)
# 11
To było celowo zrobione w ten sposób tak, że listy, krotki i inne typy kontenerów nie musiały jawnie implementować publicznej metody .length()
, zamiast tego możesz po prostu sprawdzić len()
wszystkiego, co implementuje metodę 'magic' __len__()
.
Jasne, może to wydawać się zbędne, ale implementacje kontroli długości mogą się znacznie różnić, nawet w tym samym języku. Często zdarza się, że jeden typ kolekcji używa metody .length()
, podczas gdy inny typ używa właściwości .length
, podczas gdy inny używa właściwości .count()
. Posiadanie słowa kluczowego na poziomie języka jednoczy punkt wejścia dla wszystkich tych typów. Tak więc nawet obiekty, które mogą nie być listami elementów, mogą być nadal sprawdzane pod względem długości. Obejmuje to ciągi, kolejki, drzewa itp.
Funkcjonalny charakter len()
dobrze nadaje się również do funkcjonalnych stylów programowania.
lengths = map(len, list_of_containers)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-18 18:22:14
Sposób, w jaki bierzesz długość czegokolwiek, co ma sens (lista, słownik, krotka, ciąg,...) jest wywołanie len
na nim.
l = [1,2,3,4]
s = 'abcde'
len(l) #returns 4
len(s) #returns 5
Powodem "dziwnej" składni jest to, że wewnętrznie python tłumaczy len(object)
na object.__len__()
. Dotyczy to każdego obiektu. Tak więc, jeśli definiujesz jakąś klasę i ma sens, aby miała ona Długość, po prostu zdefiniuj na niej metodę __len__()
, a następnie można wywołać len
na tych instancjach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-05 23:59:45
Python używa pisanie kaczek : nie obchodzi go, czym jest obiekt , o ile ma odpowiedni interfejs do danej sytuacji. Kiedy wywołujesz wbudowaną funkcję len () na obiekcie, w rzeczywistości wywołujesz jego wewnętrzną metodę _ _ len__. Obiekt niestandardowy może zaimplementować ten interfejs i len () zwróci odpowiedź, nawet jeśli obiekt nie jest koncepcyjnie sekwencją.
Pełna lista interfejsów znajduje się tutaj: http://docs.python.org/reference/datamodel.html#basic-customization
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-06 09:15:37
Preferowanym sposobem uzyskania długości dowolnego obiektu Pythona jest przekazanie go jako argumentu do funkcji len
. Wewnętrznie python spróbuje wywołać specjalną metodę __len__
obiektu, który został przekazany.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-03 18:18:00
Wystarczy użyć len (arr):
>>> import array
>>> arr = array.array('i')
>>> arr.append('2')
>>> arr.__len__()
1
>>> len(arr)
1
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-05 21:30:05
Możesz użyć len(arr)
jak sugerowano w poprzednich odpowiedziach, aby uzyskać długość tablicy. Jeśli chcesz podać wymiary tablicy 2D, możesz użyć arr.shape
Zwraca wysokość i szerokość
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-20 01:10:57
len(list_name)
funkcja przyjmuje list jako parametr i wywołuje funkcję __len__()
list.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-12 11:20:13