hirhirの日記

Pythonとデータ分析と人口知能

Python3 入門:for文 list ,dict ,zip ,enumerate ,

今回はfor文です。

8. 複合文 (compound statement) — Python 3.4.3 ドキュメント

他の言語と少し違うので戸惑いますが

これはこれでOKな気がします。

In [1]:
 
for i in [1,2,3]:
    print(i)
 
 
 
1
2
3

まぁこれを基本としていきます。

In [2]:
 
for i in range(5):
    print(i)
 
 
 
 
 
 
0
1
2
3
4

range関数を使用すれば規定回数まで回せる

In [8]:
 
for k , v in enumerate([1,2,3,4,5]):
    print(k,v)
 
 
 
 
 
 
 
0 1
1 2
2 3
3 4
4 5

index と 値が同時に取得したい場合はこちら↑

 

In [9]:
 
for k , v in enumerate([1,2,3,4,5]):
    print(k,v)
else:
    print('last else')
 
 
 
 
 
 
0 1
1 2
2 3
3 4
4 5
last else

elseは最後に実行される。elifは存在しない

In [11]:
 
for k , v in enumerate([]):
    print(k,v)
else:
    print('last else')
 
 
 
 
 
 
last else

 forが実行されなくてもelseは実行される。なんでだよぅ。。。

 

In [13]:
 
for k , v in enumerate([1,2,3,4,5]):
    print(k,v)
    break
else:
    print('last else')
 
 
 
 
 
 
0 1

breakすればelseは実行されない

In [15]:
 
for k , v in enumerate([1,2,3,4,5]):
    if (k == 3):
        print(k,v)
        continue
    else:
        print(k)
else:
    print('last else')
 
 
 
 
 
 
0
1
2
3 4
4
last else

 continue も存在する。この場合elseも実行される。

In [18]:
 
a = [1,2,3,4,5]
b = [6,7,8,9,0]
for i,x in zip(a,b):
    print (i ,x )
 
 
 
1 6
2 7
3 8
4 9
5 0

複数のlistをまとめて回せる

In [21]:
 
a = [1,2,3,4,5]
b = [6,7,8,9,0]
for i in zip(a,b):
    print (i )
print (type(i),i)
 
 
 
(1, 6)
(2, 7)
(3, 8)
(4, 9)
(5, 0)
<class 'tuple'> (5, 0)

まとめるとtupleになりのですが。。。。

まぁそういうもんだと言うことで。。

 

In [23]:
 
a = [1,2,3,4,5]
for i in reversed(a):
    print (i )
print (type(i),i)
 
 
 
5
4
3
2
1
<class 'int'> 1

reversedで逆回転が簡単になります。

辞書型で回す場合はこちら

In [27]:
 
a = {'banana': 'yellow', 'papaya': 'green', 'mango': 'orange'}
for k in a:
    print (k)
 
 
 
 
banana
papaya
mango

 

In [28]:
 
a = {'banana': 'yellow', 'papaya': 'green', 'mango': 'orange'}
for k in reversed(a):
    print (k)
 
 
 
 
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-28-8d70dc091edf> in <module>()
      1 a = {'banana': 'yellow', 'papaya': 'green', 'mango': 'orange'}
----> 2 for k in reversed(a):
      3     print (k)
      4 
      5 

TypeError: argument to reversed() must be a sequence

 シーケンスでないとreversedは使えないらしい

 

In [29]:
 
a = {'banana': 'yellow', 'papaya': 'green', 'mango': 'orange'}
for k ,v in a.items():
    print (k,v)
 
 
 
 
banana yellow
papaya green
mango orange

dict 辞書型の keyと値を取得するにはitemsを使用する。

今回はこれを参考にした