【问题标题】:python append list only gets last valuepython追加列表只获取最后一个值
【发布时间】:2017-11-11 09:51:28
【问题描述】:

又是一个问题,这次是关于列表的。 我已经知道我可以将列表放入列表中,但如果这样做,所有迷你列表都只是我放入的最后一个列表。这是我的程序:

g = int(input ('How many lists?'))
while g > 0 :
    Zwi.clear()
    print('')
    print('')
    print('')      
    co = float(input ('object 1'))
    Zwi.append(co)
    co = float(input ('object 2'))
    Zwi.append(co)
    co = float(input ('object 3'))
    Zwi.append(co)
    co = float(input ('object 4'))
    Zwi.append(co)
    Coords.append(Zwi)
    g = g - 1
print(Coords)

例如,如果我放入 4 个列表,然后

1,2,3,4

2,4,3,1

7,4,2,5

9,8,7,6

它只会输出

9,8,7,6,9,8,7,6,9,8,7,6,9,8,7,6

先谢谢了,再见。

【问题讨论】:

  • Zwi 始终是同一个列表。您必须在每次迭代时创建一个新列表
  • 因为列表适用于引用,所以如果您清除指向的列表,它将影响具有指向另一个列表的元素的主列表
  • 可能是您附加了对 Zwi 的引用。因此,它将处于 Zwi 结束的任何状态。一种快速检查的方法是在处理后更新 Zwi 列表,然后打印 Coords 以查看它是否会更改结果。
  • 查看链接的问题,了解代码中发生的情况。这与您的问题基本相同,只是您甚至从未尝试复制列表(或创建新列表)。

标签: python list python-3.6


【解决方案1】:

这对我有用:

g = int(input ('How many lists?'))
Coords = []
while g > 0 :
    Zwi = []
    print('')
    print('')
    print('')      
    co = float(input ('object 1'))
    Zwi.append(co)
    co = float(input ('object 2'))
    Zwi.append(co)
    co = float(input ('object 3'))
    Zwi.append(co)
    co = float(input ('object 4'))
    Zwi.append(co)
    Coords.append(Zwi)
    g = g - 1
print(Coords)

【讨论】:

    【解决方案2】:

    不要清除你的清单:

    Zwi.clear()
    

    每次都制作一个新的:

    Zwi = []
    

    前者对每个输入集合使用相同的列表,因此添加了四次相同的列表。后者创建了四个新列表。这就是你想要的。

    【讨论】:

      猜你喜欢
      • 2014-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-22
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      相关资源
      最近更新 更多