python - 将对象添加到 python 列表

标签 python object

我正在尝试将一个对象添加到列表中,但由于我在此后尝试重置列表时添加了实际对象,因此列表中的所有值都被重置。 有没有一种实际的方法可以将监视器对象添加到列表中并更改值而不影响我已经保存在列表中的值?

谢谢

代码:

arrayList = []

for x in allValues:


        result = model(x)

        arrayList.append(wM)

        wM.reset()

其中 wM 是一个监视器类 - 正在模型方法中计算/计算

最佳答案

你的问题是不是类似这样:

l = [[0]] * 4
l[0][0] += 1
print l # prints "[[1], [1], [1], [1]]"

如果是这样,您只需要在存储对象时复制它们:

import copy
l = [copy.copy(x) for x in [[0]] * 4]
l[0][0] += 1
print l # prints "[[1], [0], [0], [0]]"

有问题的对象应该实现一个 __copy__ 方法来复制对象。请参阅 copy 的文档.您可能还对 copy.deepcopy 感兴趣,它也在那里。

编辑:这是问题:

arrayList = []
for x in allValues:
    result = model(x)
    arrayList.append(wM) # appends the wM object to the list
    wM.reset()           # clears  the wM object

您需要附加一个副本:

import copy
arrayList = []
for x in allValues:
    result = model(x)
    arrayList.append(copy.copy(wM)) # appends a copy to the list
    wM.reset()                      # clears the wM object

但我仍然对 wM 的来源感到困惑。你不会一遍又一遍地复制相同的 wM 对象,除了在第一次之后清除它,其余的都是空的吗?还是 model() 修改了 wM (这对我来说听起来像是一个可怕的设计缺陷)?你为什么要扔掉result

关于python - 将对象添加到 python 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2196956/

相关文章:

c++ - 尝试使用 next_permutation 在 C++ 中模拟 python 组合

c++ - 在构造函数中调用方法

c# - 如何找出鼠标悬停在代码中创建的图片框?

php - 将对象的对象转换为对象数组(PHP、Laravel)

python - 为什么 pcap_dispatch 只返回 1 个数据包?

python - 从 json 获取值 - API

python - 为 PyQT5 的 QWebView 提供资源

python - 将重复的 "key=value"对文件读入 DataFrame

java - 实例化一个类并在不同的类中使用它

list - Perl::你能在哈希中拥有对象列表吗?