Python 3.x list.extend()在for循环期间随机添加结果失败
我在一个程序上绞尽脑汁,该程序反复选择列表中最大的项目,并将其复制到整个列表中,每次都会增加一些变化。感觉应该很简单,但每次都有一个元素是空白的。代码如下,重要部分分开:Python 3.x list.extend()在for循环期间随机添加结果失败,python-3.x,list,for-loop,random,Python 3.x,List,For Loop,Random,我在一个程序上绞尽脑汁,该程序反复选择列表中最大的项目,并将其复制到整个列表中,每次都会增加一些变化。感觉应该很简单,但每次都有一个元素是空白的。代码如下,重要部分分开: import random as r alice = [] bob = [] cathy= [] davos = [] ezekiel = [] francesco = [] graham = [] genVar = 0.25 classroom = [alice, bob, cathy, davos, ezekiel, fr
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)
将随机导入为r
爱丽丝=[]
鲍勃=[]
凯西=[]
达沃斯=[]
以西结=[]
弗朗西斯科=[]
格雷厄姆=[]
genVar=0.25
教室=[爱丽丝、鲍勃、凯西、达沃斯、以西结、弗朗西斯科、格雷厄姆]
对于我来说,在课堂上:
skill=r.random()
i、 附加(技能)
i、 附加(1-技能)
a=0
而a<10:
最佳=最大(教室,钥匙=λx:x[0]*x[1])
对于我来说,在课堂上:
i、 清除()
i、 扩展(最佳)
打印(最佳)
i[0]+=r.uniform(-1*genVar,genVar)
i[1]+=r.uniform(-1*genVar,genVar)
a+=1
打印(最佳)
当我运行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.5598973199094259,0.44010268009057407]
[0.5598973199094259, 0.44010268009057407]
[0.5598973199094259, 0.44010268009057407]
[]
回溯(最近一次呼叫最后一次):
文件“C:/Users/Leafy/AppData/Local/Programs/Python/Python36-32/multiplierlearner.py”,第24行,在
i[0]+=r.uniform(-1*genVar,genVar)
索引器:列表索引超出范围
奇怪的是,当我第二次运行代码时,我得到的结果是:
[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
[0.6459806429424123,0.35401935705877]
[]
回溯(最近一次呼叫最后一次):
文件“C:/Users/Leafy/AppData/Local/Programs/Python/Python36-32/multiplierlearner.py”,第23行,在
i[0]+=r.uniform(-1*genVar,genVar)
索引器:列表索引超出范围
完成元素的数量每次都在变化,这让我发疯。非常感谢您的帮助,如果还有更多信息需要提供,请告诉我。需要进行简单修改,如下所示:
for i in classroom:
if i != best:
i.clear()
i.extend(best)
我试过你的代码,为了更好地理解
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.randint(0,100)
i.append(skill)
i.append(skill-1)
a = 0
while a < 10:
print("Iteration number",a)
print()
best = max(classroom, key=lambda x:x[1])
print("best",best)
print("max:",max(classroom, key=lambda x:x[1]))
print("clasroom",classroom)
for i in classroom:
if i != best:
i.clear()
i.extend(best)
print("best in iteration",best)
i[0] += r.uniform(-1*genVar, genVar)
i[1] += r.uniform(-1*genVar, genVar)
a+=1
print()
print("best after iteration",best)
print()
将随机导入为r
爱丽丝=[]
鲍勃=[]
凯西=[]
达沃斯=[]
以西结=[]
弗朗西斯科=[]
格雷厄姆=[]
genVar=0.25
教室=[爱丽丝、鲍勃、凯西、达沃斯、以西结、弗朗西斯科、格雷厄姆]
对于我来说,在课堂上:
skill=r.randint(0100)
i、 附加(技能)
i、 附加(技能-1)
a=0
而a<10:
打印(“迭代编号”,a)
打印()
最佳=最大(教室,钥匙=λx:x[1])
打印(“最佳”,最佳)
打印(“最大:”,最大(教室,钥匙=λx:x[1]))
打印(“教室”,教室)
对于我来说,在课堂上:
如果我最佳:
i、 清除()
i、 扩展(最佳)
打印(“迭代中最佳”,最佳)
i[0]+=r.uniform(-1*genVar,genVar)
i[1]+=r.uniform(-1*genVar,genVar)
a+=1
打印()
打印(“迭代后最佳”,最佳)
打印()
需要进行简单修改,如下所示:
for i in classroom:
if i != best:
i.clear()
i.extend(best)
我试过你的代码,为了更好地理解
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.randint(0,100)
i.append(skill)
i.append(skill-1)
a = 0
while a < 10:
print("Iteration number",a)
print()
best = max(classroom, key=lambda x:x[1])
print("best",best)
print("max:",max(classroom, key=lambda x:x[1]))
print("clasroom",classroom)
for i in classroom:
if i != best:
i.clear()
i.extend(best)
print("best in iteration",best)
i[0] += r.uniform(-1*genVar, genVar)
i[1] += r.uniform(-1*genVar, genVar)
a+=1
print()
print("best after iteration",best)
print()
将随机导入为r
爱丽丝=[]
鲍勃=[]
凯西=[]
达沃斯=[]
以西结=[]
弗朗西斯科=[]
格雷厄姆=[]
genVar=0.25
教室=[爱丽丝、鲍勃、凯西、达沃斯、以西结、弗朗西斯科、格雷厄姆]
对于我来说,在课堂上:
skill=r.randint(0100)
i、 附加(技能)
i、 附加(技能-1)
a=0
而a<10:
打印(“迭代编号”,a)
打印()
最佳=最大(教室,钥匙=λx:x[1])
打印(“最佳”,最佳)
打印(“最大:”,最大(教室,钥匙=λx:x[1]))
打印(“教室”,教室)
对于我来说,在课堂上:
如果我最佳:
i、 清除()
i、 扩展(最佳)
打印(“迭代中最佳”,最佳)
i[0]+=r.uniform(-1*genVar,genVar)
i[1]+=r.uniform(-1*genVar,genVar)
a+=1
打印()
打印(“迭代后最佳”,最佳)
打印()
因为i
和best
都在教室里,所以可能发生i是best
这意味着i.clear()
也会清除best
。我知道我怎么可能在教室里,但best不是教室外的单独变量吗?这回答了你的问题吗?可能也很有趣:既然i
和best
都在教室
,那么i是best
,这意味着i.clear()
也会清除best
。我知道我怎么会在教室里了,但贝斯特不是在课堂之外有自己的独立变量吗?这能回答你的问题吗?可能也有兴趣:和