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