Python list.remove()从另一个列表中删除项目

时间:2014-06-25 16:41:01

标签: python list python-2.7

我想删除文件夹名称中包含“完成”的文件夹。这是我的代码

import os
mainPath = os.getcwd() + "/MyFolder/"
folderList = os.listdir(mainPath)
tempList = folderList     # so that I can iterate while using remove()
print len(tempList)
print len(folderList)
for folder in tempList:
    if 'Done' in folder:
        folderList.remove(folder)
print len(tempList)       # expected: Not to change
print len(folderList)

我得到的输出是:
26个
26个
22个
22

我不明白为什么要从 testList 中删除项目。它不应该只从 folderList 中删除吗?

1 个答案:

答案 0 :(得分:3)

你让列表指向同一个东西。使用copy.deepcopy

基本上当你执行tempList = folderList时,它会使两个列表指向同一个东西。如果您需要可以单独操作的同一列表的两个副本,则需要执行以下操作:

import copy

tempList = copy.deepcopy(folderList)

如果您知道列表中的所有项目都是不可变项,则可以tempList = folderList[:],但deepcopy更安全。

有关this related question

的大量信息