如何循环执行函数直到Python列表所有元素都为指定值
循环调用函数直到列表全为指定值的实现方案
核心逻辑
你需要用循环持续调用API获取列表,每次调用后校验所有元素是否均为success,满足条件就终止循环执行后续代码,否则间隔一段时间后重试。
注意:必须增加重试间隔避免高频请求触发API限流,建议同时设置最大重试次数,避免API持续异常导致程序无限卡死。
基础实现代码(无重试次数限制)
import time # 替换为你实际调用API返回列表的函数 def fetch_api_list(): # 此处写你的API调用逻辑,示例仅为模拟返回 return ['init', 'success', 'success'] while True: current_status = fetch_api_list() # 用all()校验所有元素是否为success if all(status == "success" for status in current_status): break # 重试间隔可根据业务场景调整,单位为秒 time.sleep(5) # 循环跳出后即可执行后续脚本逻辑 print("所有状态均为success,继续执行后续任务")
优化实现代码(带最大重试次数限制)
import time # 可根据业务需求调整以下参数 MAX_RETRY_TIMES = 30 RETRY_INTERVAL_SEC = 10 def fetch_api_list(): # 替换为实际API调用逻辑 return [] retry_count = 0 while retry_count < MAX_RETRY_TIMES: current_status = fetch_api_list() if all(status == "success" for status in current_status): print("所有任务执行成功") break retry_count += 1 print(f"当前未满足条件,第{retry_count}次重试,等待{RETRY_INTERVAL_SEC}秒") time.sleep(RETRY_INTERVAL_SEC) else: # 触发条件:循环正常结束(未通过break跳出),即达到最大重试次数仍未满足要求 raise TimeoutError(f"累计重试{MAX_RETRY_TIMES}次仍未全部返回success,任务终止") # 后续业务逻辑
关键语法说明
Python内置的all()函数会遍历传入的可迭代对象,只有所有元素的判断结果都为True时才会返回True,只要有一个元素不等于success就会返回False,触发重试逻辑。
内容的提问来源于stack exchange,提问作者bgrbr2016
相关产品推荐
相关产品推荐

