0
0

More than 3 years have passed since last update.

forで配列・辞書要素の取り出し

Posted at

for文で配列・辞書要素を取り出すときのメモとして記載します。
参考:
Pythonのfor文によるループ処理(range, enumerate, zipなど)

x=[7,4,1]
y=[8,5,2]
d={'a':9,'b':6,'c':3}

# 基本
for i in x:
    print(i)  
#>>> 7
#>>> 4
#>>> 1

Dict(辞書型Key-Value)

# Dict(辞書型)
for k,v in d.items():
    print(k,v)
#>>> a 9
#>>> b 6
#>>> c 3

#受ける変数を1つにするとTupleになる
for k in d.items():
    print(k)
#>>> ('a', 9)
#>>> ('b', 6)
#>>> ('c', 3)

#キーだけ取り出す
for k in d.keys():
    print(k)
#>>> a
#>>> b
#>>> c

#値だけ取り出す
for v in d.values():
    print(v)
#>>> 9
#>>> 6
#>>> 3

zip

#zipでまとめる
for i,j in zip(x,y):
    print(i,j)
#>>> 7 8
#>>> 4 5
#>>> 1 2

#受ける変数を1つにするとTupleになる。
for i in zip(x,y):
    print(i)
#>>> (7, 8)
#>>> (4, 5)
#>>> (1, 2)

#辞書型はTupleになる
for i,j,k,l in zip(x,y,d.items(),x):
    print(i,j,k,l)  
#>>> 7 8 ('a', 9) 7
#>>> 4 5 ('b', 6) 4
#>>> 1 2 ('c', 3) 1

#辞書型はTupleになるのでインデックス番号で分ける
for i,j,k in zip(x,y,d.items()):
    print(i,j,k[0],k[1])
#>>> 7 8 a 9
#>>> 4 5 b 6
#>>> 1 2 c 3

#受ける変数を1つにするとTupleになる。
for i in zip(x,y,d.items(),x):
    print(i) 
#>>> (7, 8, ('a', 9), 7)
#>>> (4, 5, ('b', 6), 4)
#>>> (1, 2, ('c', 3), 1)

enumerate

# enumerateを使ってインデックス番号を入れる
for i, j in enumerate(y):
    print(i,j)
#>>> 0 8
#>>> 1 5
#>>> 2 2

#受ける変数を1つにするとTupleになる。
for i in enumerate(y):
    print(i)
#>>> (0, 8)
#>>> (1, 5)
#>>> (2, 2)

#辞書型を入れる。辞書型はTupleになる。受ける変数を3つにするとエラーになる
for i, j in enumerate(d.items()):
    print(i,j)
#>>> 0 ('a', 9)
#>>> 1 ('b', 6)
#>>> 2 ('c', 3)

#Zipを入れてみる。受ける変数を4つにするとエラーになる。受ける変数は2つ。Zip内はTupleになる
for i, j in enumerate(zip(x,y,d.items())):
    print(i,j)
#>>> 0 (7, 8, ('a', 9))
#>>> 1 (4, 5, ('b', 6))
#>>> 2 (1, 2, ('c', 3))

#zip内の内容を受ける変数をTupleにすると個別に受け取ることができる
for i,(j,k,l) in enumerate(zip(x,y,d.items())):
    print(i,j,k,l)
#>>> 0 7 8 ('a', 9)
#>>> 1 4 5 ('b', 6)
#>>> 2 1 2 ('c', 3)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0