首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:使用嵌套for循环时,切片列表副本会影响原始元组或列表

Python:使用嵌套for循环时,切片列表副本会影响原始元组或列表
EN

Stack Overflow用户
提问于 2017-12-05 07:38:58
回答 1查看 38关注 0票数 1

我在更改列表或元组的任何列表副本时遇到问题。当使用两个嵌套的For循环时,元组会发生变化,如下所示:

代码语言:javascript
复制
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循环时,它的工作方式与我预期的一样,并且只更改了副本:

代码语言:javascript
复制
for rowIndex, row in enumerate(testCopy):
    testCopy[rowIndex] = ['bar']

>>>([['foo'], ['foo']], [['foo'], ['foo']])
>>>[['bar'], ['bar']]

无论原始文件是列表还是元组,或者副本是如何格式化的,都会发生这种情况:

代码语言:javascript
复制
testCopy = testInput
testCopy = list(testInput)
testCopy = testInput[:]
EN

回答 1

Stack Overflow用户

发布于 2018-07-16 02:04:07

带有递归函数的嵌套列表复制:这样,复制就是与原始无关的复制

代码语言:javascript
复制
def copyList(yourList):   
    yourCopiedList=[]   
    for listElement in yourList:
    if type(listElement)==list:
      yourCopiedList.append(copyList(listElement.copy()))
    else:
      yourCopiedList.append(listElement)   
    return yourCopiedList
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47643765

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档