我有以下代碼。爲什麼刪除不能在列表中使用?
import os
products = [
{"Product": "S65-85OS04_M2M_GP211_JC222_R6",
"PlatformName": "winPc",
"PlatformVariant": "eeprom",
"DocGeneration": False,
"BuildStatus": "Pass",
},
{"Product": "SC5-01OS19_GP221_JC302_LTE_MTN",
"PlatformName": "winPc",
"PlatformVariant": "flash",
"DocGeneration": False,
"BuildStatus": "Fail",
},
{"Product": "SC5-01OS01_GP211_JC302_LTE_TMO",
"PlatformName": "winPc",
"PlatformVariant": "flash",
"DocGeneration": False,
"BuildStatus": "Pass",
}
]
class UTE(object):
def __init__(self, workspace, products, blackList=None):
for each in products:
# print each
if each['Product'] in blackList:
products.remove(each)
for each in products:
print each["Product"]
if __name__ == '__main__':
ins = UTE('ws', products, ["SC5-01OS01_GP211_JC302_LTE_TMO", "SC5-01OS19_GP221_JC302_LTE_MTN"])
現在,每當我運行這個,它只會刪除字典中的一個條目。例如,在這種情況下,它將刪除第二個條目,即SC5-01OS19_GP221_JC302_LTE_MTN
。我相信這是有關淺拷貝.. 我對嗎?如果不是那麼如何解決這個問題?
但是,如果我做'a = [1,2,3,4,5,6,7,8]'並且在e:if e%2 == 0中做:a.remove (e)',那麼它工作正常..爲什麼? –
@MayukhSarkar我用適當的推理更新了我的答案。請看一看。 – AKS
非常感謝..讓我的理解更加清晰.. –