您好我有一个真假值列表,
visited =[True, False, True, False]
我不确定它是否可能,但是当列表为空或者访问时没有更多False值id喜欢结束While循环时,我喜欢在while循环中使用列表逻辑 这是我的尝试它似乎是一个无限循环。当我遇到一个是我的代码时,我无法改变虚假值
class mass:
def __init__(self):
visited =[True, False, True, False]
self.x = 0
while len([self.x for self.x, values in enumerate(visited) if visited[self.x] == False ]) > 0:
print(self.x)
visited[self.x] = True
print(visited)
self.x = 0
c = mass()
c
我喜欢更改false值以及在while循环中停止循环长度达到0。当我在python控制台中执行此操作时,我得到输出
>>> [x for x, values in enumerate(visited) if visited[x] == False ]
[1, 3]
visited =[True, True, True, True]
然后,如果我做
>>> visited =[True, True, True, True]
>>> [x for x, values in enumerate(visited) if visited[x] == False ]
[]
所以我试过
>>> print(len([x for x, values in enumerate(visited) if visited[x] == False ]))
0
这让我觉得我能做到
while len([x for x, values in enumerate(visited) if visited[x] == False ]) > 0
连续循环。 任何建议都会非常好,谢谢你
答案 0 :(得分:4)
在评论中澄清后:
考虑这个例子:
import random
li = [False, False, False]
while not all(li):
print('here')
i = random.randint(0, 2)
li[i] = True
此代码将在此处打印任意次数,直到li
的所有值都变为True
。
此答案中的关键是while
循环while not all(li)
的条件。
答案 1 :(得分:1)
您的解决方案似乎过度设计或问题描述缺乏关键点。
如果您只想将所有值设置为True
,则可以执行以下操作。
visited = [True, False, True, False]
for index in range(len(visited)):
visited[index] = True
print(visited)
如果您只想更改值True
,请执行以下操作:
visited = [True, False, True, False]
for index, value in enumerate(visited):
if not value:
visited[index] = True
print(visited)