如何在Python循环中生成1到360所有组合的动态列表
生成符合要求的动态循环列表
要实现你描述的动态列表生成逻辑,可以用生成器函数按规则批量生成所需列表,再在360次循环中逐个取用。
实现代码
首先定义生成器函数,按你的规则输出所有序列(假设n是列表允许的最大元素值,可根据实际需求修改):
def generate_dynamic_lists(n): start = 1 while True: # 输出单元素起始列表 yield [start] # 遍历所有可能的第二个元素 for second in range(start + 1, n + 1): # 输出双元素列表 yield [start, second] # 输出从双元素扩展到n的所有长列表 for extend_len in range(3, n - second + 2): yield [start] + list(range(second, second + extend_len - 1)) start += 1
然后在你的循环中使用这个生成器,取前360个列表:
# 替换为你实际需要的最大元素n max_element = 10 list_gen = generate_dynamic_lists(max_element) for t in range(360): try: current_list = next(list_gen) except StopIteration: # 若生成器提前耗尽,可根据需求处理(比如停止循环或重复生成) break # 这里加入你的模型调用逻辑,例如: # model.process(current_list) print(current_list) # 仅作示例输出
逻辑说明
- 生成器会先完整输出以
1开头的所有组合:从[1]开始,接着是[1,2]、[1,2,3]直到[1,2,...,n],然后切换到[1,3]、[1,3,4]直到[1,3,...,n],以此类推直到[1,n] - 完成
1开头的所有序列后,自动切换到以2开头的相同逻辑序列,持续生成新列表 - 如果
max_element设置过小导致生成器提前耗尽,可在StopIteration异常块中补充自定义处理逻辑
内容的提问来源于stack exchange,提问作者Basilico
相关产品推荐
相关产品推荐

