Это Арр. LEN () предпочтительный способ получить длину массива в Python?



In Python, это единственный способ получить количество элементов?



arr.__len__()


Если так, то почему странный синтаксис?

779   7  

7 ответов:

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

он был намеренно сделано таким образом так что списки, кортежи и другие типы контейнеров не все должны явно реализовать public .length() метод, вместо этого вы можете просто проверить len() всего, что реализует "магию"__len__() метод.

конечно, это может показаться излишним, но для контроля длины реализации могут значительно отличаться, даже в пределах одного языка. Это не редкость, чтобы увидеть один тип коллекции использовать .length() метод, в то время как другой тип использует .length свойство, в то время как еще один использует .count(). Наличие ключевого слова уровня языка унифицирует точку входа для всех этих типов. Таким образом, даже объекты, которые вы не можете считать списками элементов, все равно могут быть проверены по длине. Это включает в себя строки, очереди, деревья и т. д.

функциональная природа len() также поддается ну и к функциональным стилям программирования.

lengths = map(len, list_of_containers)

то, как вы берете длину чего-либо, для чего это имеет смысл (список, Словарь, кортеж, строка,...) стоит позвонить len на нем.

l = [1,2,3,4]
s = 'abcde'
len(l) #returns 4
len(s) #returns 5

причина" странного " синтаксиса заключается в том, что внутренне python переводит len(object) на object.__len__(). Это относится к любому объекту. Итак, если вы определяете какой-то класс и имеет смысл для него иметь длину, просто определите __len__() метод на нем, а затем можно вызвать len на эти экземпляры.

Python использует утиной типизацией: он не заботится о том, что объект - это, пока он имеет соответствующий интерфейс для текущей ситуации. Когда вы вызываете встроенную функцию len () для объекта, вы фактически вызываете его внутренний __LEN__ метод. Пользовательский объект может реализовать этот интерфейс, и len () вернет ответ, даже если объект не является концептуально последовательностью.

полный список интерфейсов, вы можете посмотреть здесь: http://docs.python.org/reference/datamodel.html#basic-customization

предпочтительный способ получить длину любого объекта python-передать его в качестве аргумента . Внутренне, python будет пытаться вызвать специальный __len__ метод объекта, который был передан.

просто используйте len (arr):

>>> import array
>>> arr = array.array('i')
>>> arr.append('2')
>>> arr.__len__()
1
>>> len(arr)
1

можно использовать len(arr) как указано в предыдущих ответах, чтобы получить длину массива. В случае, если вы хотите размеры 2D массива можно использовать arr.shape возвращает высоту и ширину

len(list_name) функция принимает list в качестве параметра и вызывает list's

Comments

    Ничего не найдено.