我希望Python初學者不是太難的問題。基於第二個列表更新列表元素作爲索引
我有一個主要列表listA,我需要根據索引列表listB中的值清零該列表中的項目。
因此,例如,給出:
listA = [10, 12, 3, 8, 9, 17, 3, 7, 2, 8]
listB = [1, 4, 8, 9]
我想輸出是
listC = [10, 0, 3, 8, 0, 17, 3, 7, 0, 0]
這個問題[1]似乎是相似的,但要求被刪除的元素,沒有改變。我不確定是否需要類似的方法,但如果是這樣,我不知道如何應用它。
[1] how to remove elements from one list if other list contain the indexes of the elements to be removed
我不太確定前者更快:它爲每個索引和一個'enumerate'調用做了一個緩慢的列表成員測試。第二種方法做一個快速複製,然後只需要儘可能多的元素爲零。 – DSM
嘿,你可能是對的。有趣的是,陷入總是假設列表理解更好的陷阱是多麼容易 – mhlester
感謝您的回覆。在我的實際數據中,listA有一百萬個項目,listB有1089個。使用%% timeit,第一種方法的時間爲27.5秒,第二種方法的時間只有13ms。那是對的嗎?這似乎是一個巨大的差異。 – MichaelMaggs