使用原始列表中的每 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中文网其他相关文章!