考虑:
1 2 3 4 5 6 7 | items = [] items.append("apple") items.append("orange") items.append("banana") # FAKE METHOD:: items.amount() # Should return 3 |
我如何得到列表中的元素数量?
1 2 | >>> len([1,2,3]) 3 |
官员2。x文档在这里:
How to get the size of a list?
要查找列表的大小,使用内置函数
1 2 3 4 | items = [] items.append("apple") items.append("orange") items.append("banana") |
现在:
1 | len(items) |
返回3。
解释
Python中的所有东西都是对象,包括列表。所有对象在C实现中都有某种头文件。
在Python中,list和其他类似的具有"size"的内置对象有一个名为
但是,如果要检查列表大小是否为零,不要使用
Return the length (the number of items) of an object. The argument may be a sequence (such as a string, bytes, tuple, list, or range) or
a collection (such as a dictionary, set, or frozen set).
Called to implement the built-in function
len() . Should return the length of the object, an integer >= 0. Also, an object that doesn’t
define a__nonzero__() [in Python 2 or__bool__() in Python 3] method and whose__len__() method returns zero
is considered to be false in a Boolean context.
我们还可以看到
1 | items.__len__() |
返回3。
内置类型可以得到的事实上,我们可以得到所有描述类型的信息:
1 2 3 | >>> all(hasattr(cls, '__len__') for cls in (str, bytes, tuple, list, xrange, dict, set, frozenset)) True |
不要使用
当然,要测试特定的长度,只需测试等式:
1 2 | if len(items) == required_length: ... |
但是有一个特殊的情况是测试零长度列表或者相反的列表。在这种情况下,不要测试是否相等。
还有,不要这样做:
1 2 | if len(items): ... |
相反,简单地做:
1 2 | if items: # Then we have some items, not empty! ... |
或
1 2 | if not items: # Then we have an empty list! ... |
我在这里简单解释一下为什么
虽然这可能没有什么用,因为它作为一个"开箱即用"的功能会更有意义,一个相当简单的技巧是构建一个带有
1 2 3 4 | class slist(list): @property def length(self): return len(self) |
你可以这样用:
1 2 3 4 5 | >>> l = slist(range(10)) >>> l.length 10 >>> print l [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] |
本质上,它与list对象完全相同,具有一个对操作友好的
和往常一样,你的里程可能会有所不同。
除了
1 2 3 4 5 6 7 8 9 10 11 12 | >>> from operator import length_hint >>> l = ["apple","orange","banana"] >>> len(l) 3 >>> length_hint(l) 3 >>> list_iterator = iter(l) >>> len(list_iterator) TypeError: object of type 'list_iterator' has no len() >>> length_hint(list_iterator) 3 |
但是
我已经看到了几个建议访问
根据前面给出的例子回答你的问题:
1 2 3 4 5 6 | items = [] items.append("apple") items.append("orange") items.append("banana") print items.__len__() |
为了完整起见,可以不使用
1 2 3 4 5 6 7 | def count(list): item_count = 0 for item in list[:]: item_count = item_count + 1 return item_count count([1,2,3,4,5]) |
(