1. ホーム
  2. python

[解決済み] リストスライスの割り当てはどのように行われるのですか?

2022-05-16 06:46:51

質問

Pythonのドキュメントによると、リストをスライスすると新しいリストが返されるそうです。

さて、もし "new" のリストが返されるなら、私は "Assignment to slices" に関連する以下のような疑問を持っています。

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

これで、出力は次のようになります。

[4, 5, 3] 

  1. 何かを返すものが、どうして式の左側に来るのでしょうか?
  2. はい、私はドキュメントを読み、それは可能であると書いてあります、今リストをスライスすると "新しい" リストを返すので、なぜ元のリストが変更されるのですか?私はその背後にあるメカニックを理解することができません。

どのように解決するのですか?

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

1) スライシング。

b = a[0:2]

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

2)スライス割り当て。

a[0:2] = b

これは を置き換える のスライスを a の内容で b .

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