リストスライスでの割り当てはどのように機能しますか? 質問する

リストスライスでの割り当てはどのように機能しますか? 質問する

Python のドキュメントには、リストをスライスすると新しいリストが返されると書かれています。
では、「新しい」リストが返される場合、「スライスへの割り当て」に関して次のような疑問があります。

a = [1, 2, 3]
a[0:2] = [4, 5]
print a

出力は次のようになります。

[4, 5, 3] 
  1. 何かを返すものを式の左側に来るにはどうすればよいですか?
  2. はい、ドキュメントを読みましたが、それは可能だと書いてあります。リストをスライスすると「新しい」リストが返されるのに、なぜ元のリストが変更されるのでしょうか? その背後にある仕組みを理解できません。

ベストアンサー1

非常によく似た構文を使用する 2 つの異なる操作を混同しています。

1) スライス:

b = a[0:2]

これは のスライスのコピーを作成しa、それを に割り当てますb

2) スライスの割り当て:

a[0:2] = b

これ置き換えるのスライスaと の内容b

構文は似ていますが (意図的にそうしていると思います)、これらは 2 つの異なる操作です。

おすすめ記事