Python 不可变元组 - 我做错了什么?

Python Immutable Tuple - What Am I Doing Wrong?

抱歉,如果这很明显,但我对 Python 还很陌生,我无法解决这个问题。在下面的代码中,我用一系列列表填充了一个元组,我试图用这个元组中的项目创建一个新列表。我希望最终的结果是 test_raw 保持不变,而 test_working 将如下所示:

[['aa', 1, 2, 99.5, ['bb', 1, 2, 27.2]],
 ['aa', 5, 5, 74.2, ['bb', 5, 5, 37]]]

但是,在这个过程中,我似乎也在将 'bb' 列表附加到我的元组中。我认为元组一旦构建,就不能更改但显然不能。知道发生了什么吗?

test_raw = (['aa',1,2,99.5],
            ['bb',1,2,27.2],
            ['aa',5,5,74.2],
            ['bb',5,5,37])
test_working = []

for i in range(len(test_raw)):
   if test_raw[i][0] == "aa":
       test_working.append(test_raw[i])
for i in range(len(test_raw)):
   if test_raw[i][0] == "bb":
       for j in range(len(test_working)):
           if test_working[j][1:3] == test_raw[i][1:3]:
               test_working[j].append(test_raw[i])
               break
print(test_raw)
(['aa', 1, 2, 99.5, ['bb', 1, 2, 27.2]], ['bb', 1, 2, 27.2], ['aa',.....)

您不是附加到元组本身,而是附加到元组内的列表。我不会为您调试您的代码,但是当您 运行 您的代码时,您会注意到您的第一个列表(最初 ['aa',1,2,99.5])中有一个新元素 (['bb', 1, 2, 27.2])

您没有附加到元组,您只是在更改该元组内的列表

考虑这个简单的例子

my_tuple = (1,2,3, [4,5,6])
my_tuple[3].append(7)

这不会添加到 my_tuple 中,只是列表中的最后一个元素