在Python中检查列表长度的3个简单步骤
在本文中,我们将看到如何通过一些简单的步骤来检查列表的长度,并分析哪种方法更好。
什么是Python列表?
列表是一个数组集合,它能够在其中存储多种数据类型。它可以存储整数、浮点数、字符串、布尔值,甚至是列表中的列表。
int_list = [1, 2, 3, 4, 5]
print(int_list) # 输出 -> [1, 2, 3, 4, 5]
float_list = [1.1, 2.2, 3.3, 4.4, 5.5]
print(float_list) # 输出 -> [1.1, 2.2, 3.3, 4.4, 5.5]
string_list = ['Geekflare', 'Cloudflare', 'Amazon']
print(string_list) # 输出 -> ['Geekflare', 'Cloudflare', 'Amazon']
boolean_list = [True, False]
print(boolean_list) # 输出 -> [True, False]
nested_list = [[1, 2], [1.1, 2.2], ['Geekflare', 'Cloudflare'], [True, False]]
print(nested_list) # [[1, 2], [1.1, 2.2], ['Geekflare', 'Cloudflare'], [True, False]]
different_datatype_list = [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]]
print(different_datatype_list) # 输出 -> [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]]
可以使用方括号或列表构造函数创建square_bracket_list 和constructor_list。
square_bracket_list = [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]]
print(square_bracket_list) # 输出 -> [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]]
constructor_list = list((1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]))
print(constructor_list) # 输出 -> [1, 1.1, 'Geekflare', True, [1, 1.1, 'Geekflare', True]]
上述square_bracket_list是使用方括号([])创建的列表,constructor_list是使用列表构造函数创建的列表。两者产生相同的列表输出。
列表是可变的,允许包含重复项,并可以通过索引访问。
查找列表长度的方法
- len() 内置函数
- 操作符的length_hint方法
- 自定义函数和计数器
方法1:len() 内置函数
len() 是Python的内置函数,用于查找列表的长度,也适用于其他可迭代对象,如集合、元组和字典。
示例代码
languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS']
languages_length = len(languages)
print('Language List的长度是:',languages_length)
输出结果
Language List的长度是: 5
希望您已经安装了Python,如果没有,可以使用链接进行代码测试。
方法2:操作符的length_hint方法
length_hint用于返回可迭代对象(如列表、集合、元组、字典)的长度。它在python的操作符模块中可用。不像其他内置操作符。
示例代码
import operator
languages = ['Python', 'Java', 'C++', 'PHP', 'nodeJS']
languages_length = operator.length_hint(languages)
print('Language List使用操作符的长度是:',languages_length)
输出结果
Language List使用操作符的长度是: 5
方法3:自定义函数和计数器
使用这种方法来查找列表的长度,我们将使用传统方法,即使用for循环和计数器。
为此,我们将在Python中编写一个函数。该函数以列表或其他可迭代对象作为参数,并返回可迭代对象的长度。
自定义函数代码段
def iterable_count(iterable):
length = 0
for item in iterable:
length+=1
return length
示例代码
def iterable_count(iterable):
length = 0
for item in iterable:
length+=1
return length
languages = [‘Python', ‘Java', ‘C++', ‘PHP', ‘nodeJS']
languages_length = iterable_count(languages)
print(‘使用自定义函数获取语言列表的长度为:',languages_length)
分析这3种方法
对大列表的性能分析
import timeit # 用于基准测试和性能分析
import operator
def iterable_count(iterable):
length = 0
for item in iterable:
length+=1
return length
integer_list = list(range(1, 9999999))
# 使用len()检查长度
start_time = timeit.default_timer()
len_length = len(integer_list)
print(timeit.default_timer() - start_time, '使用len()获取整数列表的长度为:',len_length)
# 使用operator.length_hint检查长度
start_time = timeit.default_timer()
len_length = operator.length_hint(integer_list)
print(timeit.default_timer() - start_time, '使用length_hint获取整数列表的长度为:',len_length)
start_time = timeit.default_timer()
iterable_count_length = iterable_count(integer_list)
print(timeit.default_timer() - start_time, '使用自定义函数获取整数列表的长度为:',iterable_count_length)
输出
3.957189619541168e-06 使用len()获取整数列表的长度为: 9999998
3.0621886253356934e-06 使用length_hint获取整数列表的长度为: 9999998
0.4059128537774086 使用自定义函数获取整数列表的长度为: 9999998
如我们所见,当数据量达到百万级时,length_hint 较快(3.0621886253356934e-06)。这是因为长度提示是由CPython运行时使用的,其被称为Python包装器。
对小列表的性能分析
import timeit # 用于基准测试和性能分析
import operator
def iterable_count(iterable):
length = 0
for item in iterable:
length+=1
return length
integer_list = list(range(1, 100))
# 使用len()检查长度
start_time = timeit.default_timer()
len_length = len(integer_list)
print(timeit.default_timer() - start_time, '使用len()获取整数列表的长度为:',len_length)
# 使用operator.length_hint检查长度
start_time = timeit.default_timer()
len_length = operator.length_hint(integer_list)
print(timeit.default_timer() - start_time, '使用length_hint获取整数列表的长度为:',len_length)
start_time = timeit.default_timer()
iterable_count_length = iterable_count(integer_list)
print(timeit.default_timer() - start_time, '使用自定义函数获取整数列表的长度为:',iterable_count_length)
输出
7.813796401023865e-07 使用len()获取整数列表的长度为: 99
1.1278316378593445e-06 使用length_hint获取整数列表的长度为: 99
3.462657332420349e-06 使用自定义函数获取整数列表的长度为: 99
如我们所见,当数据量在千位数或更少时,len() 较快(7.813796401023865e-07)。
在两种情况下,我们自定义的计数函数都比这两种方法花费更多时间。
结论
本文介绍了不同的方法来检查列表的长度以及它们如何快速检查列表的长度。