打印列表/生成器的前 N 个项目
这适用于普通列表。它打印列表的前 3 项
l=[1, 2, 3, 4]
print(l[:min(3, len(l))])
Run Code Online (Sandbox Code Playgroud)
我也希望这项工作适用于少于三个项目的列表。如果列表中只有一项,则打印一项。
AFAIK len(l) 仅适用于列表。如何为生成器实现这个?
您可以只使用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)