【发布时间】:2020-09-08 23:04:21
【问题描述】:
我一直在研究一个程序,该程序反复选择列表中最大的项目并将其复制到整个列表中,每次都添加一些变化。感觉应该很容易,但是每次都有一个元素最终是空白的。这是代码,重要部分分开:
import random as r
alice = []
bob = []
cathy= []
davos = []
ezekiel = []
francesco = []
graham = []
genVar = 0.25
classroom = [alice, bob, cathy, davos, ezekiel, francesco, graham]
for i in classroom:
skill = r.random()
i.append(skill)
i.append(1-skill)
a = 0
while a < 10:
best = max(classroom, key=lambda x:x[0]*x[1])
for i in classroom:
i.clear()
i.extend(best)
print(best)
i[0] += r.uniform(-1*genVar, genVar)
i[1] += r.uniform(-1*genVar, genVar)
a+=1
print(best)
当我运行 cde 时,我得到的错误是这样的:
[0.5598973199094259, 0.44010268009057407]
[0.5598973199094259, 0.44010268009057407]
[0.5598973199094259, 0.44010268009057407]
[]
Traceback (most recent call last):
File "C:/Users/Leafy/AppData/Local/Programs/Python/Python36-32/multiplierlearner.py", line 24, in <module>
i[0] += r.uniform(-1*genVar, genVar)
IndexError: list index out of range
奇怪的是,当我第二次运行代码时,却得到了这个结果:
[0.6459806429424123, 0.3540193570575877]
[]
Traceback (most recent call last):
File "C:/Users/Leafy/AppData/Local/Programs/Python/Python36-32/multiplierlearner.py", line 23, in <module>
i[0] += r.uniform(-1*genVar, genVar)
IndexError: list index out of range
完成的元素数量每次都在变化,这让我发疯。感谢您提供任何帮助,如果我应该提供更多信息,请告诉我。
【问题讨论】:
-
由于
i和best都在classroom中,可能会出现i is best这意味着i.clear()也会清除best。 -
我知道我怎么能在教室里,但最好是在教室之外有自己的独立变量吗?
-
这能回答你的问题吗? How to clone or copy a list?
标签: python-3.x list for-loop random