Как сделать цикл while используя условие над вектором объектов - PullRequest
0 голосов
/ 17 января 2019

В Python, если у меня есть вектор объектов V с локальной переменной (логическое значение) t, где t изначально установлено на False.Я хотел бы сделать цикл while, пока все объекты не установят t на True ... как я могу это сделать?

т.е. --- вот псевдокод того, о чем я думаю ..

[o.t. = False for o in V] # initially all are false
while [o.t != True for o in V]:

... do stuff that will make o.t True eventually...

1 Ответ

0 голосов
/ 17 января 2019

Я думаю, что ключом к вашему желаемому состоянию является all встроенная функция. Поскольку вы не описали класс, из которого были созданы объекты, я использовал крошечный класс для имитации вашей ситуации:

import random
class customClass:
    def __init__(self, condition=False):
        self.condition = condition


v = [customClass() for _ in range(5)]

print([obj.condition for obj in v])
# Prints: [False, False, False, False, False]

while not all([obj.condition for obj in v]):

    #do stuff that sometimes changes the state of condition 
    # Here I randomly select an object and set its condition to true
    o = random.choice(v)
    o.condition = True

print([obj.condition for obj in v])
# Prints: [True, True, True, True, True]

Обратите внимание, что число итераций не равно 5, и цикл while продолжается до тех пор, пока все элементы списка, переданные в него, не станут истинными. Вы можете проверить его документацию здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...