pythonのforループでremoveを使用して発生した問題


carsリストを空にするには、
cars=['audi', 'bmw', 'subaru', 'toyota']

これは最も簡単な方法だ.
cars=[]

forサイクルで見つけたい
for car in cars:
    cars.remove(car)

結果は[‘bmw’,‘toyota’]
その後、removeの第1の要素audiの場合、後の要素が前に移動する、すなわちbmw位置が元のaudiであることが判明し、ポインタは新しいリストcars=[‘bmw’,‘subaru’,‘toyota’]の第2の要素を指し、car=subaru,bmwはスキップされ、このようにtoyotaもスキップされる.
解決策1
cars=['audi', 'bmw', 'subaru', 'toyota']
c=['audi', 'bmw', 'subaru', 'toyota']
for car in c:
    cars.remove(car)

リストが大きくない場合は、コピーリストを追加します.2
for car in cars.copy():
    cars.remove(car)

copy()はリストコピーを作成する方法であり、carsの要素を削除するためにポインタがスキップされないことを回避します.
学習ソース:https://blog.csdn.net/weixin_42568337/article/details/84448922