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
中,只是列表中的最后一个元素
抱歉,如果这很明显,但我对 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
中,只是列表中的最后一个元素