道歉,如果这是显而易见的,但我对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',.....)
答案 0 :(得分:0)
你不是追加元组本身,而是追逐元组内的列表。我不会为您调试代码,但是当您运行代码时,您会注意到您的第一个列表(原['aa',1,2,99.5]
)中有一个新元素(['bb', 1, 2, 27.2]
)< / p>
你没有附加到元组,你只是改变那个元组内的列表
考虑这个简单的例子
my_tuple = (1,2,3, [4,5,6])
my_tuple[3].append(7)
这不会添加到my_tuple
,只是作为其最后一个元素的列表