首页  >  文章  >  后端开发  >  如何从原始列表中每第 N 个项目生成一个新列表?

如何从原始列表中每第 N 个项目生成一个新列表?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-10-20 10:56:02658浏览

How to Generate a New List with Every Nth Item from an Original List?

使用原始列表中的每 N 个项目创建一个列表

在数据分析或编程中,通常需要使用以下子集一个清单。一项常见任务是创建一个新列表,其中仅包含原始列表中的每第 N 个项目。例如,给定一个从 0 到 1000 的整数列表,我们如何获得一个仅包含第一个和后续第 10 个项目的列表?

使用传统的 for 循环,我们可以按如下方式完成此任务:

<code class="python">xs = list(range(1001))
new_list = []
for i, x in enumerate(xs):
    if i % 10 == 0:
        new_list.append(x)</code>

但是,使用 Python 的切片可以提供更简洁、更高效的方法:

<code class="python">>>> xs = list(range(1001))
>>> new_list = xs[0::10]</code>

在此解决方案中,xs[0::10] 表达式创建一个新列表,包括从索引 0 开始的每 10 项。结果是一个包含 [0, 10, 20, 30, ..., 1000] 的列表,无需循环或条件检查。

此方法明显更快与 for 循环方法相比,在处理大型列表时证明是有利的。正如以下时间比较所示:

<code class="python">$ 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</code>

这种使用切片的优化方法为使用原始列表中的每 N 个项目创建新列表提供了简单性和性能优势。

以上是如何从原始列表中每第 N 个项目生成一个新列表?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn