如何获取列表项中的元素数?
items = ["apple", "orange", "banana"]
# There are 3 items.
如何获取列表项中的元素数?
items = ["apple", "orange", "banana"]
# There are 3 items.
当前回答
按照前面给出的示例回答您的问题:
items = []
items.append("apple")
items.append("orange")
items.append("banana")
print items.__len__()
其他回答
有三种方法可以找到列表中元素的长度。我将在这里比较这三种方法与性能分析。
方法1:使用len()
items = []
items.append("apple")
items.append("orange")
items.append("banana")
print(len(items))
输出:
3
方法2:使用Naive Counter方法
items = []
items.append("apple")
items.append("orange")
items.append("banana")
counter = 0
for i in items:
counter = counter + 1
print(counter)
输出:
3
方法3:使用length_hint()
items = []
items.append("apple")
items.append("orange")
items.append("banana")
from operator import length_hint
list_len_hint = length_hint(items)
print(list_len_hint)
输出:
3
性能分析–Naive vs len()vs length_hint()
注意:为了进行比较,我将输入列表更改为一个大集合,该集合可以提供大量的时间差来比较方法。
items = list(range(100000000))
# Performance Analysis
from operator import length_hint
import time
# Finding length of list
# using loop
# Initializing counter
start_time_naive = time.time()
counter = 0
for i in items:
# incrementing counter
counter = counter + 1
end_time_naive = str(time.time() - start_time_naive)
# Finding length of list
# using len()
start_time_len = time.time()
list_len = len(items)
end_time_len = str(time.time() - start_time_len)
# Finding length of list
# using length_hint()
start_time_hint = time.time()
list_len_hint = length_hint(items)
end_time_hint = str(time.time() - start_time_hint)
# Printing Times of each
print("Time taken using naive method is : " + end_time_naive)
print("Time taken using len() is : " + end_time_len)
print("Time taken using length_hint() is : " + end_time_hint)
输出:
Time taken using naive method is : 7.536813735961914
Time taken using len() is : 0.0
Time taken using length_hint() is : 0.0
结论
可以清楚地看到,与其他两种方法相比,naive所花费的时间非常长,因此len()和length_hint()是最好的选择。
您可以使用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中有一个名为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(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有两种类型用于存储整数)并返回。