【问题标题】:in python, looping n times a list.insert with different values inserts only the last value n times why? [duplicate]在python中,循环n次具有不同值的list.insert只插入最后一个值n次为什么? [复制]
【发布时间】:2020-07-11 07:21:09
【问题描述】:

将 mydict 插入 mylist 的第三个位置 4 次, 名称应递增的位置(例如:x1,x2,x3..)

mylist=["a","b","c","d"]
mydict={'name':"x"}

for i in range(1,5):
   mydict['name']="x"+str(i)
   mylist.insert(2,mydict)

print(mylist)

预期输出:

['a', 'b', {'name': 'x4'}, {'name': 'x3'}, {'name': 'x2'}, {'name': 'x1'}, 'c', 'd']

实际输出:

['a', 'b', {'name': 'x4'}, {'name': 'x4'}, {'name': 'x4'}, {'name': 'x4'}, 'c', 'd']

【问题讨论】:

    标签: python list


    【解决方案1】:

    mylist.insert(2,mydict)reference 插入到 mydict 到 mylist 中。循环的每次迭代都会修改同一个字典对象并插入对同一个字典对象的引用。当您在最后显示列表内容时,您会看到该字典的最终内容。如果您在循环的每次迭代中显示列表,您会看到内容发生变化。

    在循环的每次迭代中创建一个新字典。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-18
      • 1970-01-01
      • 2012-08-04
      • 2013-10-24
      • 1970-01-01
      • 1970-01-01
      • 2015-08-28
      • 1970-01-01
      相关资源
      最近更新 更多