Python★Tips

Pythonをやってて自分が知らなかった事をまとめています。

アンパック

アンパックはアンパックでも特に引数に用いるアンパックは知りませんでした。

解説

def 関数名(*タプル名orリスト名)

引数に使われているタプルorリストが展開される。

【例】
def unpack_tuple_list(a,b,c):
    print(a) 
    print(b)   
    print(c)
 
list1 = ['l1', 'l2', 'l3']
unpack_tuple_list(*list1)
 
tuple1 = ('t1', 't2', 't3')
unpack_tuple_list(*tuple1)
【実行結果】
l1
l2
l3
t1
t2
t3

enumerate()

for文の中でenumerateを使うと、取り出された値が可変参照のような動きをしていたのでメモ。

解説

for i, x in enumerate( array )

ienumerateから与えられる番号
xforループでarrayから取り出した値
array配列

enumerateによって展開されたxは可変参照のような役割を果たします。つまり、xの値を変更するとarrayに反映されます。

【例】
import numpy as np
ary = np.zeros(shape=(5, 3))
ind = np.random.randint(0, 3, size=5)

print(ary)
print(ind)
[[0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]
 [0. 0. 0.]]
[0 2 0 2 0]
# forループの中でxの値を修正すると、aryの値も変わる。
for i, x in enumerate(ary):
    x[ind[i]] = 1

print(ary)
[[1. 0. 0.]
 [0. 0. 1.]
 [1. 0. 0.]
 [0. 0. 1.]
 [1. 0. 0.]]

Python

Posted by Bright_Noah