如何获取列表项中的元素数?
items = ["apple", "orange", "banana"]
# There are 3 items.
如何获取列表项中的元素数?
items = ["apple", "orange", "banana"]
# There are 3 items.
当前回答
您可以使用len()函数来查找python中可迭代项的长度。
my_list = [1, 2, 3, 4, 5]
print(len(my_list)) # OUTPUT: 5
len()函数还可以处理字符串:
my_string = "hello"
print(len(my_string)) # OUTPUT: 5
最后,len()可用于任何序列或集合(或定义__len__的任何大小的对象)。
其他回答
要获取任何顺序对象中的元素数,Python中的goto方法是len()。
a = range(1000) # range
b = 'abcdefghijklmnopqrstuvwxyz' # string
c = [10, 20, 30] # List
d = (30, 40, 50, 60, 70) # tuple
e = {11, 21, 31, 41} # set
len()方法可以处理所有上述数据类型,因为它们是可迭代的,即您可以对它们进行迭代。
all_var = [a, b, c, d, e] # All variables are stored to a list
for var in all_var:
print(len(var))
len()方法的粗略估计
def len(iterable, /):
total = 0
for i in iterable:
total += 1
return total
len()函数可以用于Python中的几种不同类型——内置类型和库类型。例如:
>>> len([1, 2, 3])
3
简单:使用len(list)或list__len__()
就len()的实际工作方式而言,这是它的C实现:
static PyObject *
builtin_len(PyObject *module, PyObject *obj)
/*[clinic end generated code: output=fa7a270d314dfb6c input=bc55598da9e9c9b5]*/
{
Py_ssize_t res;
res = PyObject_Size(obj);
if (res < 0) {
assert(PyErr_Occurred());
return NULL;
}
return PyLong_FromSsize_t(res);
}
Py_size_t是对象可以具有的最大长度。PyObject_Size()是一个返回对象大小的函数。如果无法确定对象的大小,则返回-1。在这种情况下,将执行以下代码块:
if (res < 0) {
assert(PyErr_Occurred());
return NULL;
}
结果引发了异常。否则,将执行此代码块:
return PyLong_FromSsize_t(res);
res是一个C整数,它被转换为Python int(在C代码中仍然称为“Long”,因为Python 2有两种类型用于存储整数)并返回。
虽然这可能不太有用,因为它作为“开箱即用”功能更有意义,但一个相当简单的方法是构建一个具有长度属性的类:
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友好长度属性的额外好处。
一如既往,您的里程数可能会有所不同。
如何获取列表的长度?
要查找列表中的元素数,请使用内置函数len:
items = []
items.append("apple")
items.append("orange")
items.append("banana")
现在:
len(items)
返回3。
解释
Python中的所有内容都是一个对象,包括列表。在C实现中,所有对象都有某种类型的头。
列表和Python中具有“大小”的其他类似内置对象尤其具有一个名为ob_size的属性,其中缓存了对象中的元素数。因此,检查列表中对象的数量非常快。
但如果要检查列表大小是否为零,请不要使用len,而是将列表放在布尔上下文中,如果为空,则将其视为False,如果为非空,则视为True。
从文档中
长度
返回对象的长度(项目数)。参数可以是序列(例如字符串、字节、元组、列表或范围)或集合(如字典、集合或冻结集合)。
len是用__len__实现的,来自数据模型文档:
对象__len__(自己)
调用以实现内置函数len()。应该返回对象的长度,一个大于等于0的整数。此外定义__nonzero_()[在Python 2中或__bool_()在Python 3中]方法,其__len__()方法返回零在布尔上下文中被认为是假的。
我们还可以看到__len__是一种列表方法:
items.__len__()
返回3。
内置类型,可以获得长度
事实上,我们可以看到所有描述类型的信息:
>>> 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!
...
or
if not items: # Then we have an empty list!
...
我在这里解释了为什么,但简而言之,if项或if项都更可读,更具性能。