python3の日記

Python3を図書とともに勉強していくブログ

【SoloLearn】制御構造-for Loops

f:id:pokita:20180527162737p:plain

SoloLearn-Control Structures-for Loops

generator関数についての記事を書いていたら、迷走に迷走を重ねてしまいました。まったくfor構造のこと理解していなかったのが原因。ジェネレーターをやるよりも、まずはイテレータをマスターします。

 

まずは第1項。

 

Sometimes, you need to perform code on each item in a list. This is called iteration, and it can be accomplished with a while loop and counter variable.

各リストのなかの要素に作用するコードはイテレーションと呼ばれていて、数え上げ変数を使うことで、whileコードを使って実現することができる。

処理が一周回るたびに+1されていき、処理回数を記憶しておく変数。それがcounter variable。実際に回してみる。

 

words = ["hello", "world", "spam", "eggs"]

counter = 0

max_index = len(words) - 1

 

while counter < = max_index:

  word = words[counter]

  print(word + "!")

  counter = counter +1

>>>

hello!

world!

spam!

eggs!

>>>

 

できたはできたけど、記述が長い。それにカウンター変数、値が頻繁に変わるグローバル変数はあんまりよくない。

 

そこで第2項。

 

The same code from the previous example can be written with for loop, as follows:

同じようなコードがforを使って以下のように書けるよ。

実際に回してみる。

 

words = ["hello", "world", "spam", "eggs"]

for word in words:

  print(word + "!")

>>>

hello!

world!

spam!

eggs!

>>>

 

前よりも短いし、何より環境(グローバル変数)への影響がない。いいじゃん。

 

最後に第3項。

 

The for loop is commonly used to repeat some code a certain number of times. This is done by combining for loop with range object.

forループは主にあるコードを一定の回数処理させるために使います。これはrangeオブジェクトと組み合わせて行われます。

実際に回してみる。

 

for i in range(5):

  print("hello!")

>>>

hello!

hello!

hello!

hello!

hello!

>>>

 

どういう仕組になっているかわかりやすく書く。

for __代入ターゲット__ in 指定オブジェクト:

という構造になっており、

 

①forによる繰返し処理は指定オブジェクト内の要素(シーケンス)の数だけ行われる。

そのため、第3項の処理はrange(5)の要素[0,1,2,3,4]の個数=5回行われた。

②for以下の代入ターゲット変数には、指定オブジェクトの処理回数個目のindexによるシーケンスが代入される。

そのため、第2項の代入ターゲットには、指定オブジェクトのそれぞれの要素が次々と入った。

 

わかりやすく書くとこんなところ。(本当は少し異なるんだけど。)

詳しくは【初めてのPython】のfor編を見てみてね~~!