pythonのforループでremoveを使用して発生した問題
887 ワード
carsリストを空にするには、
これは最も簡単な方法だ.
forサイクルで見つけたい
結果は[‘bmw’,‘toyota’]
その後、removeの第1の要素audiの場合、後の要素が前に移動する、すなわちbmw位置が元のaudiであることが判明し、ポインタは新しいリストcars=[‘bmw’,‘subaru’,‘toyota’]の第2の要素を指し、car=subaru,bmwはスキップされ、このようにtoyotaもスキップされる.
解決策1
リストが大きくない場合は、コピーリストを追加します.2
copy()はリストコピーを作成する方法であり、carsの要素を削除するためにポインタがスキップされないことを回避します.
学習ソース:https://blog.csdn.net/weixin_42568337/article/details/84448922
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