Python中如何让for循环复用自身输出按指定次数重复执行?
实现方案
在外层增加一个控制迭代次数的循环,用临时变量存储当前世代的种群,每轮迭代生成新种群后直接覆盖临时变量即可,无需额外定义函数或使用递归。
完整示例代码
# 初始第一代种群 gen1 = [(214, 66, 229, 87, 259), (256, 11, 249, 75, 242), (247, 41, 206, 4, 194), (214, 61, 172, 59, 225), (270, 78, 238, 69, 261), (235, 22, 175, 31, 213), (272, 37, 222, 80, 222), (233, 70, 207, 33, 218), (227, 38, 244, 47, 229), (264, 76, 246, 52, 239), (273, 2, 201, 10, 273), (215, 85, 205, 4, 199), (268, 9, 235, 51, 195), (236, 53, 198, 43, 273), (224, 27, 212, 29, 236), (275, 64, 190, 62, 257), (226, 23, 178, 44, 202), (219, 19, 196, 8, 227), (227, 60, 238, 15, 213), (216, 62, 185, 73, 192)]
# 自定义迭代次数,比如要迭代10次就设为10 iter_times = 10 # 用current_gen变量持有当前世代的种群,初始为第一代 current_gen = gen1 for _ in range(iter_times): next_gen = [] # 遍历当前世代的所有个体,执行你的交叉等操作 for Po in current_gen: # 这里替换为你实际的操作逻辑,处理后得到新个体new_po new_po = Po # 示例占位,替换为你的运算结果 next_gen.append(new_po) # 迭代完成后,将新种群赋值给current_gen,作为下一轮迭代的输入 current_gen = next_gen # 所有迭代完成后,current_gen就是最终世代的种群 print(current_gen)
逻辑说明
- 外层的
range(iter_times)控制迭代总次数,和你要求的执行次数完全匹配 - 所有原有逻辑不需要改动,只需要把原来遍历的
gen1换成可变的current_gen变量即可 - 每轮迭代结束后直接用新生成的
next_gen覆盖current_gen,自动完成输入的迭代更新
如果需要保留每一代的种群,可以额外加一个列表存储每一轮的current_gen即可。
内容的提问来源于stack exchange,提问作者Sayanta Seth
相关产品推荐
相关产品推荐

