是否可以重置
中的x
lis[3, 3, 4, 5]
test = [(tes(x)) for x in range (0, len(lis)) if lis[x] == "abc"]
或者可能改为使用while循环。事情是,我想在我完成后lis
运行这个理解列表,而不仅仅是一次迭代。
说我想减少列表中的每个变量。
lis[3, 3, 4, 5]
lis[2, 2, 3, 4]
lis[1, 1, 2, 3]
lis[0, 0, 1, 2]
然后在第一次击中零时停止。
答案 0 :(得分:2)
你可以cycle
列表,直到达到你的条件,这里我们打破第一个值0
:
from itertools import cycle
lis = [3, 3, 4, 5]
for ind, ele in enumerate(iter(lambda: next(cycle(lis)), 0)):
lis[ind % len(lis)] -= 1
print(lis)
[0, 1, 2, 3]
答案 1 :(得分:1)
假设您希望将列表中的所有成员减少1,直到较小的成员达到0的值。
def decrease_list(lis):
def stop():
raise Exception("Stop")
try:
while True:
lis=[e - 1 if e>1 else stop() for e in lis]
except:
pass
return lis
让我们测试一下:
In [35]: lis=[20, 12, 11, 10]
In [36]: decrease_list(lis)
Out[36]: [10, 2, 1, 0]
In [33]: lis = [20, 12, 10, 10]
In [34]: decrease_list(lis)
Out[34]: [10, 2, 0, 0]