如何获取列表项中的元素数?

items = ["apple", "orange", "banana"]

# There are 3 items.

当前回答

python中有一个名为len()的内置函数,在这些情况下会有所帮助。

>>> a = [1,2,3,4,5,6]
>>> len(a)  # Here the len() function counts the number of items in the list.
6

这在字符串的情况下会稍微不同:它计算字符。

>>> a = "Hello"
>>> len(a)
5

其他回答

按照前面给出的示例回答您的问题:

items = []
items.append("apple")
items.append("orange")
items.append("banana")

print items.__len__()

python中有一个名为len()的内置函数,在这些情况下会有所帮助。

>>> a = [1,2,3,4,5,6]
>>> len(a)  # Here the len() function counts the number of items in the list.
6

这在字符串的情况下会稍微不同:它计算字符。

>>> a = "Hello"
>>> len(a)
5

要获取任何顺序对象中的元素数,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之外,您还可以使用operator.length_hint(需要Python 3.4+)。对于普通列表,两者都是等效的,但length_hint可以获得列表迭代器的长度,这在某些情况下可能很有用:

>>> 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

但根据定义,length_hint只是一个“提示”,所以大多数时候len更好。

我看到了几个建议访问___ len__的答案。在处理像list这样的内置类时,这是可以的,但这可能会导致自定义类出现问题,因为len(和length_hint)实现了一些安全检查。例如,两者都不允许负长度或超过某个值(sys.maxsize值)的长度。因此,使用len函数而不是__len__方法总是更安全!

简单:使用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有两种类型用于存储整数)并返回。