#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)
Предполагая, что функция возвращает кортеж с тремя статусами.