Зацикливайте функцию до тех пор, пока все элементы в списке python не будут иметь определенное значение

#python #python-3.x

Вопрос:

Я хотел бы зациклить функцию до тех пор, пока все элементы в моем списке не будут иметь определенное значение, но я понятия не имею, как достичь этого результата.

в принципе, я создаю список на основе вызова API, и мне нужно проверить, все ли элементы имеют «успех», если нет, я хочу запустить функцию снова, пока у меня не будет всех элементов со статусом успеха, и продолжить свой сценарий.

пример списка:

 list = ['init', 'init', 'success'] - need to repeat the function list = ['init', 'success', 'success'] - need to repeat the function list = ['success', 'success', 'success'] - Ready to go! continue the script  

в принципе, я борюсь с циклом, а затем вызываю функцию.

Кто-нибудь может мне с этим помочь?

Ваше здоровье.

Комментарии:

1. Пытаться: while any(word != 'success' for word in mylist): . (Здесь используется имя переменной mylist — использование имени list не рекомендуется, поскольку оно используется для встроенного.) Или эквивалентно: while not all(word == 'success' for word in mylist):

Ответ №1:

Один из возможных подходов-использовать цикл while до тех пор, пока функция не вернет желаемый результат.

 myList = ['init'] while any(it != 'success' for it in myList):  my_list = functionCall()  

Ответ №2:

Отлично, спасибо за совет о любом() методе. это было именно то, что мне нужно!

 check_list = [] for a in sa_response_json['items']:  check_list.append(a['status']['state'])  print(f"-------------------- {check_list}")  if any(it != 'success' for it in check_list):  print("Checking devices status = Success. It can take some time")  sleep(10)  print("Checking again")  check_agent_state() else:  print("-------------------- All devices have been onboarded")  print(f"-------------------- {check_list}")  

Ответ №3:

Может быть, что-то вроде этого сработает:

 results = ("", "", "") while result != ("success", "success", "success"):  results = function(x)  

Предполагая, что функция возвращает кортеж с тремя статусами.