如何解决使用 iter() 将列表的一部分保存在一个变量中,另一部分保存在另一个变量中
我试图将一个列表分成 2 个列表,分成不均匀的部分。我通过应用 iter() 函数来实现这一点,如最后一行所示:
def crossover():
end = len(bestPop) - 1
for i in range(0,end,2):
crosspoint = (random.randint(1,len(range(stringLen - 2))))
crosspoint2 = stringLen - crosspoint
listA = pop[bestPop[i]]
listB = pop[bestPop[end - i]]
sizes = [crosspoint,crosspoint2]
it = iter(listA)
print([[next(it) for _ in range(size)] for size in sizes])
这会为 20 的总和创建一个随机比例(例如 17 和 3 & 6 和 14),以便拆分列表。这工作成功并打印出来:
[['1','0','1',' 0','1'],['1','1']]
但是我想知道如何将列表一对一地保存,并将两个列表保存到另一个。
非常感谢任何建议!谢谢
解决方法
我解决了这个问题,但不幸的是,没有使用迭代器。这是我的解决方案
def crossover():
end = len(bestPop) - 1
print("sdaasd" + str(bestPop))
for i in range(0,end,2):
crossPoint = (random.randint(1,len(range(stringLen - 2))))
crossPoint2 = stringLen - crossPoint
listA = pop[bestPop[i]]
listB = pop[bestPop[end - i]]
sizes = [crossPoint,crossPoint2]
parA1,parA2 = splitList(sizes,listA)
parB1,parB2 = splitList(sizes,listB)
childA = list(chain(parA1,parB2))
childB = list(chain(parB1,parA2))
pop.append(childA)
pop.append(childB)
def splitList(sizes,list):
par1 = []
par2 = []
for s in range(-division):
if s < sizes[0]:
par1.append(list[s])
else:
par2.append(list[s])
return par1,par2
输出:
父 B = ['0','1','0','0']
列出大小为 -15['0','0']
大小为 -5['1','0'] 的列表 b
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。