如何在Python中获取列表的元素数量(列表长度)?
我怎么才能知道列表 items
中有多少个元素呢?
items = ["apple", "orange", "banana"]
# There are 3 items.
11 个回答
虽然这可能不是特别有用,因为它本来应该是“开箱即用”的功能,但有一个相对简单的办法,就是创建一个带有 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]
基本上,它和列表对象是完全一样的,只是多了一个适合面向对象编程的 length
属性。
不过,具体效果可能因人而异。
如何获取列表的长度?
要找出列表中有多少个元素,可以使用内置的函数 len
:
items = []
items.append("apple")
items.append("orange")
items.append("banana")
现在:
len(items)
返回的是 3。
解释
在 Python 中,所有东西都是对象,包括列表。所有对象在 C 语言的实现中都有某种头部信息。
特别是,列表和其他类似的内置对象都有一个叫做 ob_size
的属性,用来缓存对象中的元素数量。所以检查列表中的元素数量是非常快的。
但是,如果你想检查列表的大小是否为零,不要使用 len
- 而是把列表放在布尔上下文中 - 如果列表为空,它会被视为 False,非空则为 True。
来自 文档
len(s)
返回对象的长度(项目数量)。参数可以是一个序列(比如字符串、字节、元组、列表或范围)或一个集合(比如字典、集合或冻结集合)。
len
是通过 __len__
实现的,具体可以参考数据模型的 文档:
object.__len__(self)
调用这个方法来实现内置函数
len()
。应该返回对象的长度,一个大于等于 0 的整数。此外,如果一个对象没有定义__nonzero__()
[在 Python 2 中] 或__bool__()
[在 Python 3 中] 方法,并且它的__len__()
方法返回零,那么在布尔上下文中这个对象被视为 False。
我们还可以看到 __len__
是列表的一个方法:
items.__len__()
返回的是 3。
可以获取 len
(长度)的内置类型
实际上,我们可以为所有描述的类型获取这个信息:
>>> all(hasattr(cls, '__len__') for cls in (str, bytes, tuple, list,
range, 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
比其他方法更易读且性能更好。
len()
这个函数在Python中可以用来处理多种不同类型的数据,包括内置类型和库中的类型。举个例子:
>>> len([1, 2, 3])
3