缺少迭代遍历和计算迭代次数的方法。这就是使其成为可迭代的而不是列表的原因。这实际上甚至不是特定于python的问题。看一下经典的链表数据结构。查找长度是一个O(n)操作,涉及对整个列表进行迭代以查找元素的数量。
正如上面提到的,您可以将函数缩减为:
def count_iterable(i):
return sum(1 for e in i)
当然,如果要定义自己的可迭代对象,则始终可以实现__len__
自己并将元素计数保持在某个位置。
有没有内置的方法来获取python中可迭代的长度?
缺少迭代遍历和计算迭代次数的方法。这就是使其成为可迭代的而不是列表的原因。这实际上甚至不是特定于python的问题。看一下经典的链表数据结构。查找长度是一个O(n)操作,涉及对整个列表进行迭代以查找元素的数量。
正如上面提到的,您可以将函数缩减为:
def count_iterable(i):
return sum(1 for e in i)
当然,如果要定义自己的可迭代对象,则始终可以实现__len__
自己并将元素计数保持在某个位置。