Python, 在嵌套列表中交换特定值

0 投票
0 回答
35 浏览
提问于 2025-04-12 05:54

我有一个嵌套列表,里面总是有5个值。这个列表里的元素可以是不同的。

我想把这个列表复制到两个不同的列表中,并且在这两个新列表里总是交换两个值。

代码是可以做到这一点的,但在第二次循环时,第一个列表又被覆盖了。我不知道为什么会这样。

举个例子:

test = [['1', '1', '1', '2024-03-03', "100"], ['1', '1', '2', '2024-05-03', "200"], ['1', '2', '2', '2024-05-03', "200"], ['1', '3', '3', '2024-01-03', "200"]]

print(test) # Okay

lst_01 = test.copy() # Okay
lst_02 = test.copy() # Okay

for item in lst_01:
    item[3] = "2024-01-01"
    item[4] = ""

print(lst_01) # Okay
print(lst_02) # Not Okay: Overwritten

for item in lst_02:
    item[3] = "2024-12-31"
    item[4] = ""

print(lst_01) # Mistake: First list again overwritten
print(lst_02) # Okay

sum = lst_01 + lst_02 # List lst_01 and lst_02 equal. This is not correct

print(sum)

代码的结果是:

list(sum)

[['1', '1', '1', '2024-12-31', ''], ['1', '1', '2', '2024-12-31', ''], ['1', '2', '2', '2024-12-31', ''], ['1', '3', '3', '2024-12-31', ''], ['1', '1', '1', '2024-12-31', ''], ['1', '1', '2', '2024-12-31', ''], ['1', '2', '2', '2024-12-31', ''], ['1', '3', '3', '2024-12-31', '']]

第一个列表“lst_01”里的日期总是“2024-12-31”。我哪里出错了?

谢谢你的反馈。

我希望根据“test”列表的内容生成一个新列表,并且值要改变。这个新列表的元素数量是原来的两倍,并且有新的值。

0 个回答

暂无回答

撰写回答