items[:] = something()
のようなのを見かけました
なんだっけこれ
この構文有効なんだっけ?
……とか思って試してみるとリストの部分入れ替えでした
なんかあったような気もする
>>> items = [1,2,3,4,5,6,7,8]
>>> items[2:6] = [100,200]
>>> items
[1, 2, 100, 200, 7, 8]
JavaScript でいう splice ですね
const items = [1,2,3,4,5,6,7,8]
items.splice(2, 4, 100, 200)
console.log(items)
// [1, 2, 100, 200, 7, 8]
[:] だとリスト内全部が置換対象になっています
それだと [:] なしでも同じなのですが 既存リストが変更される違いがあります
[:] なしは新しいリストを変数に代入です
>>> items = [1, 2]
>>> id(items)
5792232
>>> items = [3, 4]
>>> id(items)
5794504
[:] ありだと変数に入っているリストオブジェクトはそのままです
>>> items = [1, 2]
>>> id(items)
5792232
>>> items[:] = [3, 4]
>>> id(items)
5792232
別のところでもこのリストを保持していて そっちにも影響を与えたいときには良さそうです