为了账号安全,请及时绑定邮箱和手机立即绑定

为什么列表中的所有元素都指向在循环末尾添加的最后一个元素?

为什么列表中的所有元素都指向在循环末尾添加的最后一个元素?

婷婷同学_ 2022-08-25 15:39:58
这是我的代码:population= [stream_rules.StreamRules for n in range(len(buffer))]l= [[] for n in range (len(buffer))]for i in range(0, len(buffer)):    length = random.randrange(2, len(buffer[i]), 1)    split = random.randrange(1, length, 1)    population[i].split = split    for j in range(0, length):        l[i].append(buffer[i][j])    population[i].ch= l[i]for i in range(0, len(population)):    print(population[i].ch)请注意,这是一个将 作为变量的类。我试图做的是复制列表每行中的每一行,然后将其传递给.StreamRuleschsplitbufferLpopulation[i].ch问题是,当我尝试在最后一个循环中打印(为了验证)时,我发现所有元素都指向我从中复制的最后一个元素。我看不出问题出在哪里。任何人都可以帮我吗?chbuffer
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您在创建时忘记了括号 - 您实际上并没有创建实例。它应该是.所有元素都是相同的,因为 的元素不是 instaces,因此您创建了被叫和 的静态成员,并且静态成员对于所有类成员都是相同的。populationpopulation= [stream_rules.StreamRules() for n in range(len(buffer))]populationStreamRuleschsplit



查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号