如何从生成器或列表中提取前N项?

448 投票
8 回答
419004 浏览
提问于 2025-04-16 13:15

使用时,我会这样做:

var top5 = array.Take(5);

那么用Python怎么做呢?

8 个回答

153
import itertools

top5 = itertools.islice(array, 5)

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

728

切片列表

top5 = array[:5]
  • 要切片一个列表,语法很简单:array[start:stop:step]
  • 你可以省略任何一个参数。下面这些写法都是可以的:array[start:]array[:stop]array[::step]

切片生成器

import itertools
top5 = itertools.islice(my_list, 5) # grab the first five elements
  • 在Python中,你不能直接对生成器进行切片。你可以使用itertools.islice(),它会用新的切片生成器来包装一个对象,语法是 itertools.islice(generator, start, stop, step)

  • 记住,切片生成器会部分消耗它。如果你想保持整个生成器不变,可以先把它转换成元组或列表,比如:result = tuple(generator)

撰写回答