我在更改列表或元组的任何列表副本时遇到问题。当使用两个嵌套的For循环时,元组会发生变化,如下所示:
testInput = ( ['foo','foo',], ['foo','foo'] )
testCopy = list(testInput)
for rowIndex, row in enumerate(testCopy):
for columnIndex, column in enumerate(row):
testCopy[rowIndex][columnIndex] = ['bar']
print(testInput)
print(testCopy)
>>>([['bar'], ['bar']], [['bar'], ['bar']])
>>>[[['bar'], ['bar']], [['bar'], ['bar']]]
当只使用一个for循环时,它的工作方式与我预期的一样,并且只更改了副本:
for rowIndex, row in enumerate(testCopy):
testCopy[rowIndex] = ['bar']
>>>([['foo'], ['foo']], [['foo'], ['foo']])
>>>[['bar'], ['bar']]
无论原始文件是列表还是元组,或者副本是如何格式化的,都会发生这种情况:
testCopy = testInput
testCopy = list(testInput)
testCopy = testInput[:]
发布于 2018-07-16 02:04:07
带有递归函数的嵌套列表复制:这样,复制就是与原始无关的复制
def copyList(yourList):
yourCopiedList=[]
for listElement in yourList:
if type(listElement)==list:
yourCopiedList.append(copyList(listElement.copy()))
else:
yourCopiedList.append(listElement)
return yourCopiedList
https://stackoverflow.com/questions/47643765
复制相似问题