用原始列表中的每 N 个项目创建一个列表
在数据分析或编程中,通常需要使用一个清单。一项常见任务是创建一个仅包含原始列表中每第 N 个项目的新列表。例如,给定一个从 0 到 1000 的整数列表,我们如何获得一个仅包含第一个和后续第 10 个项目的列表?
使用传统的 for 循环,我们可以按如下方式完成此任务:
xs = list(range(1001))
new_list = []
for i, x in enumerate(xs):
if i % 10 == 0:
new_list.append(x)
然而,使用Python的切片可以提供更简洁、更高效的方法:
>>> xs = list(range(1001))
>>> new_list = xs[0::10]
在此解决方案中,xs[0::10] 表达式创建一个新列表,其中包含从索引 0 开始的每 10 个项目。结果是一个包含 [0 , 10, 20, 30, ..., 1000] 无需循环或条件检查。
此方法比 for 循环方法快得多,在处理大型列表时证明是有利的。如以下时间比较所示:
$ python -m timeit -s "xs = list(range(1000))" "[x for i, x in enumerate(xs) if i % 10 == 0]"
500 loops, best of 5: 476 usec per loop
$ python -m timeit -s "xs = list(range(1000))" "xs[0::10]"
100000 loops, best of 5: 3.32 usec per loop
这种使用切片的优化方法为使用原始列表中的每 N 个项目创建新列表提供了简单性和性能优势。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3