my_list = [1,2,3,4,5]
len(my_list)
# 5
То же самое работает для кортежей:
my_tuple = (1,2,3,4,5)
len(my_tuple)
# 5
И строки, которые на самом деле являются просто массивами символов:
my_string = 'hello world'
len(my_string)
# 11
Это было намеренно сделано таким образом , чтобы списки, кортежи и другие типы контейнеров не нуждались в явной реализации публичного .length()
метода, вместо этого вы можете просто проверить len()
чего-либо который реализует «волшебный» метод __len__()
.
Конечно, это может показаться излишним, но реализации проверки длины могут значительно различаться даже на одном и том же языке. Весьма распространено видеть, что один тип коллекции использует метод .length()
, в то время как другой тип использует свойство .length
, а другой использует .count()
. Наличие ключевого слова на уровне языка объединяет точку входа для всех этих типов. Таким образом, даже объекты, которые вы не считаете списками элементов, все же могут быть проверены по длине. Сюда входят строки, очереди, деревья и т. Д.
Функциональная природа len()
также хорошо подходит для функциональных стилей программирования.
lengths = map(len, list_of_containers)