在Python中是否可以限制条件列表理解的长度?
我正在进行条件列表理解,例如在Python中是否可以限制条件列表理解的长度?,python,list-comprehension,Python,List Comprehension,我正在进行条件列表理解,例如newlist=[x代表x,如果x%2==0]。我想将结果列表的长度限制为一个特定的数字 如果不先理解整个列表,然后对其进行切片,是否可以这样做? 我想象一些具有以下功能的东西: limit = 10 newlist = [] for x in list: if len(newlist) > limit: break if x % 2 == 0: newlist.append(x) 无法对原始列表进行切片
newlist=[x代表x,如果x%2==0]
。我想将结果列表的长度限制为一个特定的数字
如果不先理解整个列表,然后对其进行切片,是否可以这样做?
我想象一些具有以下功能的东西:
limit = 10
newlist = []
for x in list:
if len(newlist) > limit:
break
if x % 2 == 0:
newlist.append(x)
无法对原始列表进行切片(例如,如果x%2==0,则列表中的x为x[:25]),因为在我的特定用例中,if条件不会在任何可预测的时间间隔内返回True
非常感谢。请不要命名任何变量
list
,因为它隐藏了内置的list
构造函数。我使用li
替换此处的输入列表
按需要导入itertools
gen=(如果x%2==0,则x代表li中的x)#惰性生成器。
结果=列表(it.islice(gen,25))
由于您正在使用列表理解功能创建列表,因此可以在创建列表后直接对其进行切片
[x代表列表中的x[:25]如果x%2==0][:limit]
这就解决了问题!谢谢!虽然有可能,但为什么要这样做?解决方案将包括几个深度嵌套的表达式–使用循环可能更容易阅读。这显然不是问题所希望的:“如果不先理解整个列表,然后将其切分,这是可能的吗?”嘿,似乎是这样。这就是你在深夜回答问题时得到的答案。