あるリストから別のリストにアイテムを転送しようとしていますが (以下のように)、結果は本当に不可解です。ここで何が起こっているのか誰にも分かりませんか??
l1=range(1,11)
l2=[]
for i in l1:
if i>=6:
l2.append(i)
l1.remove(i)
print l1
print l2
l1 = [1-5, 7, 9] # and
l2 = [6, 8, 10] # !!
問題は、反復しているリストを変更しているという事実によるものです。
SOで検索すると、これに関する多くの投稿が見つかります。例:繰り返しながらリストを変更する、Python:リストを繰り返しながらリスト要素を削除するなど
反復しているリストを変更しないでください。変更すると、奇妙な結果が得られます。座っている枝を切るようなものです。に基づいて2つのリストを作成するのはどうl1
ですか?
big = [x for x in l1 if x >= 6]
small = [x for x in l1 if x < 6]
さらに良いことに、パフォーマンスを重視する場合:
big = []
small = []
for item in l1:
if item >= 6:
big.append(item)
else:
small.append(item)