【问题标题】:list.append() in loops can only return final list [duplicate]循环中的list.append()只能返回最终列表[重复]
【发布时间】:2019-02-21 23:50:06
【问题描述】:

例如:

a = {}; 
b = [];
for i in range(20):
    b.append(i)
    a[i] = b

循环之后,a 的所有键都链接到同一个最终列表b [0,1,2,...,19]。 但是,我想要的是a[0] = [0]a[1] = [0,1]a[2] = [0,1,2]。 我不知道这里出了什么问题。

【问题讨论】:

  • a[i] = b 你不断将 i 处的 dict 的值设置为 同一个列表 b,使用 b.copy() 代替获取副本...跨度>
  • @juanpa 回答。
  • 你陷入了在 python 中复制列表的问题,实际上你分配给a[i] 的所有列表都具有相同的 id(尝试使用id(Object))所以更改b 将更改以前的@987654332 @s ,尝试使用 copy.copy 方法将列表 b 复制到 a[i]
  • @AubreydaCunha 不,这是重复的。在python标签中每天都会多次弹出同样的问题
  • 非常感谢你们!我以前没有注意到这一点。

标签: python list loops append


【解决方案1】:
a = {}; 
b = [];
for i in range(20):
    b=[k for k in range(i)]
    a[i] = b

希望对你有帮助

【讨论】:

  • [k for k in range(i)] 应该只是list(range(i))。此外,这并没有真正向 OP 解释什么是错误的,或者你的回答是为了解决它。
猜你喜欢
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-16
  • 2022-08-17
相关资源
最近更新 更多