获取列表的前 N ​​项,如果列表较短,则可以

gue*_*tli 1 python

打印列表/生成器的前 N ​​个项目

这适用于普通列表。它打印列表的前 3 项

l=[1, 2, 3, 4]
print(l[:min(3, len(l))])
Run Code Online (Sandbox Code Playgroud)

我也希望这项工作适用于少于三个项目的列表。如果列表中只有一项,则打印一项。

AFAIK len(l) 仅适用于列表。如何为生成器实现这个?

Dek*_*kel 8

您可以只使用l[:3],无需其他任何东西:

In [11]: l = [1, 2, 3 ,4]

In [12]: print(l[:3])
[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

对于生成器,这将完全相同:

In [19]: def firstn(n):
    ...:     num = 0
    ...:     while num < n:
    ...:         yield num
    ...:         num += 1
    ...:

In [20]: list(firstn(5))[:3]
Out[20]: [0, 1, 2]
Run Code Online (Sandbox Code Playgroud)

它也适用于少于n元素的容器:

n = 20
lyst = [1, 2]
print(lyst[:20])  # prints [1, 2]
Run Code Online (Sandbox Code Playgroud)

  • 无需重新发明轮子。只需使用“itertools”中的“islice”即可。例如。`max(islice(iter(range(m)), n))` 适用于 `m` 和 `n` 的所有可能的正整数值对。 (2认同)