【问题标题】:list.append of an instance of a class functionlist.append 类函数的实例
【发布时间】:2016-03-10 04:12:55
【问题描述】:

列表 ac_hist 的初始化值。目的是保持历史位置跟踪 ac_hist = [[450,600]]

这段代码:

ac_hist.append(aircraft_list[i].get_position()) 

应该产生一个代表不同 [x,y] 位置的列表。 get_position 的值在每次调用时都会发生变化。但结果都是一样的。似乎我正在附加一个变量实例而不是一个值,并且每次变量的值更改时,所有附加项都会更改值(用于初始化列表的值除外)?

print ac_hist 

产生以下结果:

[[450, 600], [1.414, 234.156]]
[[450, 600], [1.358, 234.552], [1.358, 234.552]]
[[450, 600], [1.302, 234.948], [1.302, 234.948], [1.302, 234.948]]
[[450, 600], [1.246, 235.344], [1.246, 235.344], [1.246, 235.344], [1.246,     235.344]]

【问题讨论】:

  • 您甚至没有向我们展示您不止一次地执行此append()。如果您不向我们展示您的代码在做什么,那么任何人都应该如何告诉您?请将您的问题编辑成MCVE
  • 您正在将同一职位列表的副本附加到您的ac_hist 列表中。但是如果没有看到您的代码,就不可能提供进一步的建议。

标签: python list function class append


【解决方案1】:

谢谢。附加在 for 循环内。我能够通过使用新的 list() 来解决问题。在这种情况下列表(临时)。

for i in range(5):
    list(temp) = aircraft_list[i].get_position() 
    ac_hist.append(temp) 

因为飞机列表[i].get-position 的结果是一个 2 元素列表,我将相同的列表附加到 ac_hist。所以每次我更新两个元素列表的值时,ac_hist 的所有元素都取相同的值。

感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多