我正在尝试制作列表的重复列表,并在重复列表的嵌套列表中将一个元素更改为另一个元素,但我遇到了一些麻烦。 我是如何制作重复列表的:
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']
关于python - 替换嵌套列表python中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11315236/