items = []
items.append("apple")
items.append("orange")
items.append("banana")
# FAKE METHOD::
items.amount() # Should return 3
如何获取列表中的元素数量?
如何获得列表的大小?
要查找列表的大小,请使用内置函数len
:
items = []
items.append("apple")
items.append("orange")
items.append("banana")
现在:
len(items)
返回 3。
Python 中的所有内容都是一个对象,包括列表。所有对象在 C 实现中都有某种标题。
特别是在 Python 中具有 “大小” 的列表和其他类似内置对象具有名为ob_size
的属性,其中对象中的元素数量被缓存。因此,检查列表中的对象数量非常快。
但是,如果您正在检查列表大小是否为零,请不要使用len
- 而是将列表放在布尔上下文中 - 如果为空则将其视为 False,否则为 True 。
len(s)
返回对象的长度(项数)。参数可以是序列(例如字符串,字节,元组,列表或范围)或集合(例如字典,集合或冻结集合)。
len
是使用__len__
从数据模型docs 实现的 :
object.__len__(self)
被调用来实现内置函数
len()
。应该返回对象的长度,整数 > = 0. 此外,一个没有定义__nonzero__()
[在 Python 3 中的__bool__()
在 Python 3 中] 并且__len__()
方法返回零的对象被认为是在布尔上下文中为 false。
我们还可以看到__len__
是一种列表方法:
items.__len__()
返回 3。
len
(长度) 事实上,我们看到我们可以获得所有描述类型的信息:
>>> all(hasattr(cls, '__len__') for cls in (str, bytes, tuple, list,
xrange, dict, set, frozenset))
True
len
来测试空列表或非空列表当然,要测试特定长度,只需测试相等性:
if len(items) == required_length:
...
但是有一个特殊情况用于测试零长度列表或反向列表。在这种情况下,不要测试是否相等。
另外,不要这样做:
if len(items):
...
相反,只需:
if items: # Then we have some items, not empty!
...
要么
if not items: # Then we have an empty list!
...
我在这里解释原因,但简而言之, if items
或if not items
更具可读性和更高性能。
虽然这可能没有用,因为它更具有 “开箱即用” 功能,但是一个相当简单的黑客就是构建一个具有length
属性的类:
class slist(list):
@property
def length(self):
return len(self)
您可以像这样使用它:
>>> l = slist(range(10))
>>> l.length
10
>>> print l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
从本质上讲,它与列表对象完全相同,具有 OOP 友好length
属性的额外好处。
一如既往,您的里程可能会有所不同