作者:手机用户2602905667 | 来源:互联网 | 2023-10-09 19:05
我正在做一个条件列表理解,例如newlist = [x for x in list if x % 2 == 0]
。我想将结果列表的长度限制为特定数字。
如果不先理解整个列表然后对其进行切片,这可能吗?
我想象一些具有以下功能的东西:
limit = 10
newlist = []
for x in list:
if len(newlist) > limit:
break
if x % 2 == 0:
newlist.append(x)
切片原始列表(例如[x for x in list[:25] if x % 2 == 0]
,不可能,因为True
在我的特定用例中,if 条件不会以任何可预测的间隔返回。
提前谢谢了。
回答
请不要命名任何变量,list
因为它会影响内置list
构造函数。我li
在这里用作输入列表的替代品。
import itertools as it
gen = (x for x in li if x % 2 == 0) # Lazy generator.
result = list(it.islice(gen, 25))