你能否只使用while语句在列表推导式中生成一个列表?
使用for的列表推导式:
r = [i for i in range(0,5)]
r = [0, 1, 2, 3, 4]
使用while循环是否可以构建这个列表?
原型:
i=0
print [i+=1 while i<5]
你能否只使用while语句在列表推导式中生成一个列表?
使用for的列表推导式:
r = [i for i in range(0,5)]
r = [0, 1, 2, 3, 4]
使用while循环是否可以构建这个列表?
原型:
i=0
print [i+=1 while i<5]
itertools.takewhile
过滤你的生成器。>>> from itertools import takewhile
>>> list(takewhile(lambda x:x<5,range(5))) #in python 2.X pass an Xrange
[0, 1, 2, 3, 4]
另一种选择是使用 yield
。对于更复杂的操作,这样做可以更简单且整体上更易于维护:
def generate_less_than(val):
i = 0
while i < val:
yield i
i += 1
r = list(generate_less_than(5))
list
。参数化也很简单。你已经走在了正确的道路上。这个代码可以正常工作:
print [i for i in range(5)]
你可能也会喜欢“一次性”变量——下划线:
print [_ for _ in range(5)]
这适用于列表推导式和其他上下文中,索引仅在迭代范围内使用的情况。
first_val,_,third_val = func_returns_3_tuple()
。我认为该变量的约定在这里不适用,因为您正在列表推导式中使用该值。 - jpmc26
itertools.takewhile
。 - Ashwini Chaudhary