Pythonで複数の値を複数の変数に同時に代入する
PHPでは見慣れない感じでしたのでメモとして残します。
左辺に複数の変数、右辺に同数の値を記載して代入
a, b = 1, 2 print(a) # 1 print(b) # 2
これはタプルのパックとシーケンスのアンパックを組み合わせたものとのことです。
http://docs.python.jp/2/tutorial/datastructures.html#tuples-and-sequences
http://docs.python.jp/3/tutorial/datastructures.html#tuples-and-sequences
PHPで似たようなことをしようとすると、
<?php list($a, $b) = [1, 2]; echo $a; // 1 echo $b; // 2
※複数の値を配列として返すfunctionからの返り値を受け取る場合などに利用できるかと思われます。
配列の途中の値をまとめて置き換え
スライスで行えます。
v = range(1, 10) print(v) # [1, 2, 3, 4, 5, 6, 7, 8, 9] v[1:6] = ['a'] * 5 print(v) # [1, 'a', 'a', 'a', 'a', 'a', 7, 8, 9]
v[1:6]
の:
の左側のoffset以上:
の右側のoffset未満と覚えることにします。
PHPで行うと、
<?php $v = range(1, 9); print_r($v); /* Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 ) */ array_splice($v, 1, 5, array_fill(0, 5, 'a')); print_r($v); /* Array ( [0] => 1 [1] => a [2] => a [3] => a [4] => a [5] => a [6] => 7 [7] => 8 [8] => 9 ) */
array_splice
の第1引数で指定する配列はリファレンス渡し
になるので渡した配列そのものが書き換えられます。