Skip to main content
 首页 » 编程设计

python之替换嵌套列表python中的项目

2025年05月04日14over140

我正在尝试制作列表的重复列表,并在重复列表的嵌套列表中将一个元素更改为另一个元素,但我遇到了一些麻烦。 我是如何制作重复列表的:

order = [['yhjK', 'F'], 'gap', ['bcsA', 'F'], ['bcsB', 'F'], ['bcsZ', 'F'], 'gap', ['yhjK', 'R']] 
#order_1 = list(order) #this makes the duplicate list as well 
order_1 = [] 
for x in order: 
    order_1.append(x) 

我是如何改变元素的:

for item in order_1: 
    for n,i in enumerate(item): 
            if i=='R': 
                    item[n]='F' 
            if i=='F': 
                    item[n]='R' 

我想用“R”替换所有“F”,反之亦然。这实现了这一点,但原始列表“顺序”也发生了变化。我只想更改第二个列表,无法弄清楚我的代码有什么问题。

我得到的:

order = [['yhjK', 'R'], 'gap', ['bcsA', 'R'], ['bcsB', 'R'], ['bcsZ', 'R'], 'gap', ['yhjK', 'F']] 
order_1 = [['yhjK', 'R'], 'gap', ['bcsA', 'R'], ['bcsB', 'R'], ['bcsZ', 'R'], 'gap', ['yhjK', 'F']] 

我想要的:

order = [['yhjK', 'F'], 'gap', ['bcsA', 'F'], ['bcsB', 'F'], ['bcsZ', 'F'], 'gap', ['yhjK', 'R']] 
order_1 = [['yhjK', 'R'], 'gap', ['bcsA', 'R'], ['bcsB', 'R'], ['bcsZ', 'R'], 'gap', ['yhjK', 'F']] 

谢谢大家!

请您参考如下方法:

您在这里所做的是列表的浅拷贝,因此当您更改副本时,原始副本也会更改。你需要的是deepcopy

import copy 
order = [['yhjK', 'F'], 'gap', ['bcsA', 'F'], ['bcsB', 'F'], ['bcsZ', 'F'],  
'gap', ['yhjK', 'R']] 
order_1 = copy.deepcopy(order) 
 
# Now changing order_1 will not change order 
order_1[1] = ['TEST LIST'] 
print order[1] # Prints 'gap' 
print order_1[1] # Prints '['TEST LIST']