Ad
2: 2016-07-12 (火) 16:26:59 njf ソース バックアップ No.2 を復元して編集 現: 2018-06-08 (金) 17:46:02 njf ソース 編集
Line 1: Line 1:
-[[Python]]で回数を指定してループするのは通常for文とrangeを組み合わせる。+*基本 [#x743c32f] 
 +[[Python]]で回数を指定してループするのは通常for文とrangeを組み合わせます。
 for i in range(3):  for i in range(3):
Line 10: Line 11:
 2  2
-このとき、iのスコープはループの外まである。+このとき、iのスコープはループの外まであるので注意が必要です。
 for i in range(3):  for i in range(3):
   print i    print i
 + 
 print i  print i
Line 23: Line 24:
 2  2
-rangeは等差数列を生成する関数。つまり+rangeは等差数列を要素とする配列を生成する関数で、
 >>> range(3)  >>> range(3)
 [0, 1, 2]  [0, 1, 2]
-となる。pythonのforループはinの要素を順にループするので、このような結果となる。+となります。pythonのforループはinの要素を順にループするので、このような結果となります。
-rangeは最小値、上限、差を引数とすることもできる。+rangeは最小値、上限、差を引数とすることもできます。
 >>> range(1,4)  >>> range(1,4)
Line 37: Line 38:
 [1, 3]  [1, 3]
-非常に回数の多いループで、リストを生成するとメモリがもったいない、という場合にはxrangeを使うとリストを生成しないのでメモリが節約できる。+非常に回数の多いループで、リストを生成するとメモリがもったいない、という場合にはxrangeを使います。これははじめにまとめてリストを生成せず、ループの時に動的に値を生成するため、メモリが節約できます。
 for i in xrange(3):  for i in xrange(3):
   print i    print i
-xrangeはxrange型のオブジェクトを返す。+xrangeはxrange型のオブジェクトを返します。
 xrange(3)  xrange(3)
 >>> range(1,2)  >>> range(1,2)
-そのかわり次の要素を取得するときに計算を行うので遅くなる。通常はrangeで十分。非常に大きな回数のループの時だけ考慮すれば良い。+xrangeは動的に値を生成する分だけループが遅くなりますが、rangeとの差はわずかです。それより、大きなリストを生成する負荷の方が高いため、非常に大きな数をループする時にはxrangeのほうが処理が速くなります。経験的には数千回程度以下のループだとさほど差を感じませんが、数十万回以上のループをさらに繰り返すような場合だとxrangeの方が体感できるほど速くなります。このようにxrangeの方がメリットが大きいためか、python3ではxrangeは廃止され、rangeがpython2のxrangeとなりました。python3でrangeからリストを生成するには、
-pythonのforループはelse文もとれる+ rlist = list(range(5)) 
 + 
 +とします。 
 + 
 +*for文のelse [#q3e3971e] 
 + 
 +他の多くの言語と異なり、pythonのforループはelse文も書けます。
 for i in range(3):  for i in range(3):
Line 61: Line 68:
 loop end  loop end
-else文はbreakを使ったときにとばされる+forループのelse文はbreakを使ったときには処理を実行しません。
 for i in range(3):  for i in range(3):
   print i    print i
Line 71: Line 78:
 0  0
-例えば、ループの中の処理で何か検索し見つかればbreakして、最後まで見つからなかったときにelse文で「無かった」とメッセージを出す、といった使い方ができる。+つまりループが最後まで回ってから終わったかどうかの判定が可能です。これにより、例えば、ループの中の処理で何か検索し見つかればbreakして、最後まで見つからなかったときにelse文で「無かった」とメッセージを出す、というような処理が簡単に実装できます。
 # -*- coding: utf-8 -*-  # -*- coding: utf-8 -*-
 from random import  randint  from random import  randint
 + 
 for i in range(3):  for i in range(3):
   print i    print i


トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード印刷に適した表示   ページ新規作成 全ページ一覧 単語検索 最新ページの一覧   ヘルプ   最新ページのRSS 1.0 最新ページのRSS 2.0 最新ページのRSS Atom Powered by xpWiki
Counter: 2835, today: 1, yesterday: 4
MenuBar
広告

ログイン

ユーザー名:


パスワード:





パスワード紛失

Portuguese | English | German | Greek | Japanese | Korean | Russian | T-Chinese top
NJF