1つのwhile文
ループを実現するために、条件が真であるかどうかを判定することにより、継続するかどうかを決定する一方で。
1.1一般的な構文
構文は次のとおりです。
表現中:
suite_to_repeat
1.2カウント
1 2 3 >>> CNT = 0 4 5 >>> 一方(CNT <9 ): 6 7 ... プリント ' 指標である' 、CNT 8 9 ... CNT + = 1 10 11 ... 12 13インデックスがある0 14 15インデックスがある 1 16 17インデックスがある 2 18 19インデックスがある 3 20 21インデックスがである 4 22 23インデックスがある 5 24 25インデックスがある 6 26 27インデックスがある 7 28 29インデックスがある 8
プリントやブロックがインクリメント文を含む、繰り返し劣ら9 CNT知っているより、実行されません。
1.3無限ループ
真の中に:
suite_to_repeat
条件式が真となっています。
for文2
別のサイクルPythonは表現の分析及び生成に使用され得る配列のリストをトラバースするために使用されるメカニズムを提供するためのステートメントがあります。
2.1一般的な構文
(例えばシーケンスや加算器など)、ループ反復アクセスオブジェクト用のすべての要素は、あるサイクルの終了後、すべてのエントリを処理します。構文は次のとおりです。
反復可能でiter_var用:
suite_to_repeat
iter_var反復変数が反復オブジェクト(配列、イテレータオブジェクトの反復または他の支持体)において現在の要素に設定されている各ループは、ステートメントsuite_to_repeatのブロックの使用が提供されます。
シーケンスタイプの2.2
文字列、リストやタプル:発表ループの異なるシーケンスは、オブジェクトを繰り返します。
次の3つの方法の反復シーケンス:
アイテムの反復配列(1)
各反復は、eachName変数は、特定のリスト要素に設定されています。
反復シーケンスインデックス(2)
>>> NAMELIST = [ 'ボブ'、 'リサ'、 'ヘンリー']
>>>範囲内nameIndex(LEN(ネームリスト))のために:
...プリント、ネームリスト[nameIndex]
...
ボブ
リサ
ヘンリー
繰り返しのシーケンスを作成する範囲()関数を使用して、シーケンスの長さを取得するためにlenは()関数を使用します。
(3)項と指数反復の使用
内蔵の列挙()関数を使用します
>>> NAMELIST = [ 'ボブ'、 'リサ'、 'ヘンリー']
>>>私のために、列挙中eachName(名前リスト):
...私は、eachNameを印刷します
...
0ボブ
1リサ
2ヘンリー
3範囲()組み込み関数
範囲()完全な構文は次のとおりです。
範囲([スタート]ストップ[ステップ])
範囲は()は、kの全てのリストを(<= K <始端)を返し、開始から終了まで、kは各時間ステップをインクリメントし、ステップ0ではありません。
>>>範囲(3,7)
[3、4、5、6]
図4は、組み込み配列に関連する機能
()、()、列挙()、ZIP()逆に並べ替え
)(逆:イテレータアクセス逆の順序を返します。
1 >>> NAMELIST = [ ' ボブ'、' リサ'、' ヘンリー' ] 2 3 >>>年= 1978、1989、1990、2003 ] 4 5 >>> ための名前でソート(ネームリスト): 6 7 ... 印刷名、 8 9 ... 10 11 ボブヘンリーリサ 12 13 >>> 名前リスト 14 15 [ ' ボブ'、'追加"、' ヘンリー' ] 16 17 >>> ための名前に逆(ネームリスト): 18 19 ... 印刷名、 20 21 ... 22 23 ヘンリーリサボブ 24 25 >>> 用 I、名前で列挙(ネームリスト) : 26 27 ... 印刷iは、名前を 28 29 ... 30 31 0ボブ 32 33 1 リサ 34 35 2 ヘンリー 36 37 >>> ための名前、年におけるジップ(名前リスト、年): 38 39 ... 印刷年、名 40 41 ... 42 43 1978 ボブ 44 45 1989 リサ・ 46 47 1990・ヘンリー
5 break文
break文は次の文に現在のサイクルジャンプを終了するために使用されます。
6声明を続けます
検出された文を続けると、プログラムは現在のサイクルを終了し、文の残りの部分を無視して、サイクルの先頭に戻ります。前の反復の初めに、条件ループ(whileループ)、検証条件式である場合には、ケースは(forループ)反復ループがある場合は、繰り返しの要素があるかどうかを確認することができ、唯一の検証が成功すると、それが下に来ました反復。
>>>有効= Falseの >>>数= 3 >>> しばらく数> 0: ...入力 = raw_input(' passsword入力してください。' ) ... のための eachPasswd でpasswdList: ... もし入力== eachPasswd: ...有効 = 真 ... 休憩 ... 場合 ではない有効な: ... プリント 「無効な入力」 ...数 - = 1 ... 続けます ... 他に: ... ブレイク
7パス文
パス文は何もしない(すなわち、NOP、ノーオペレーション、ノーオペレーション)のステートメントブロックを必要とする場所に任意の文を書いていないため。
8とイテレータITER()関数
基本的に、次の()メソッドではなく、計数インデックスイテレータオブジェクトが存在します。あなたや循環機構は、次の必要がある場合は、次のイテレータを呼び出す()メソッドは、それを得ることができます。
イテレータクラスは、データ構造の集合である配列、のようなシリアルインタフェースオブジェクトを提供し、それらを使用することができる最後のエントリへの配列の0「反復」から指数を有します。
8.1イテレータ
(1)配列
>>> iはITERを=(myTuple)
>>> i.next()
123
>>> i.next()
'ABC'
>>> i.next()
45.600000000000001
>>> i.next()
トレースバック(最新の呼び出しの最後):
<モジュール>内のファイル "<STDIN>"、1行目、
呼び出すとStopIteration
自動的にそのイテレータバイトのシーケンスを生成します。
配列でのIのために:
do_something_to(I)
(2)辞書
pythonの辞書データ型は、反復もあります。辞書イテレータは、そのキー(キー)を横断します。myDict.keysでeachKey()のためのステートメントはmyDictにeachKeyために省略することができます。
>>> myDict = { '':10、 'B':20、 'C':30}
>>> eachKeyためmyDictで:
...印刷eachKey、myDict [eachKey]
...
10
C 30
B 20
さらに、パイソンならびにつの新しい内蔵辞書反復法を定義する:キーを介しmyDict.iterkeys()(反復によるキー)、(値の反復によって)myDict.itervalues()とmyDict.iteritems()( - 反復の値)。
(3)ファイル
自動的に生成されたFileオブジェクトのイテレータはreadlineの()メソッドを呼び出して、サイクルは、テキストファイルのすべての行にアクセスすることができます、あなたは)(myFile.readlinesにeachlineためのmyFile交換にeachlineのために使用することができます
>>>のmyFile =オープン( 'TESTFILE.TXT')
>>> eachlineのためのmyFile:
...プリントeachline
...
イテレータの作成8.2
あなたはそれをイテレータを取得することができます()オブジェクトへのITERを呼び出します。構文は次のとおりです。
パス(OBJ)
旅行(FUNC、センチネル)
あなたはITER()にパラメータを渡すと、渡されたパラメータをチェックし、それがある場合は、反復までの0からシーケンスインデックスの終わりに基づいて、シーケンスではありません。2つのパラメータはITER()に渡された場合は、次の反復は、センチネルの値に等しくなるまで、コールは、FUNCが繰り返されます。
9リストの内包
リストの内包が動的にリストを作成するために使用することができ、以下のように、構文は次のとおりです。
[反復可能でiter_varための式]
exprは、最終結果が生成式の値のリストである、前述の配列の各メンバーに適用されます。反復変数は、式の一部である必要はありません。
>>> [範囲内のxのX ** 2(6)]
[0、1、4、9、16、25]
また、表現と併せて、拡張構文は次のようであれば使用することができます。
[反復可能でiter_varためのexpr cond_expr場合]
この構文は、条件式のcond_exprの一連のメンバーを満たすためにフィルタリングしたり、「捕獲」されます。
>>> [範囲(6)におけるxのX X%2であれば]
[1、3、5]
(1)実施例:サンプルマトリックス
3行5列のマトリックスとして
>>> [範囲のyの範囲(3)におけるxの(X + 1、Y + 1)(5)]
[(1,1)、(1,2)、(1,3)、(1,4)、(1,5)、(2,1)、(2,2)、(2,3)、( 2,4)、(2,5)、(3,1)、(3,2)、(3,3)、(3,4)、(3,5)]
10ジェネレータ式
ジェネレータ式は、リスト内包の拡張です。ビルダーは、「一時停止」のコードが後に復元されない、あなたが値を返すことができます特別な機能です。
決意の欠如は、リスト全体を作成するために使用されるすべてのデータのリストを生成する必要があります。基本的な構文と、リストビルダーに似ていますが、実際には番号のリストを作成していないが、発電機、発電機は、その都度エントリー算出され、このエントリ「プロデュース」(歩留まり)を出て返します。
ジェネレータ式は次の通り:
(反復可能cond_expr場合にiter_varためexpr)は
例えば(1):クロス対サンプル
>>>行= [1、2、3、17 ]
>>> DEF COLS():
...収率56
...収量2 ...収率1 >>> x_product_pairs =((i、j)のiについてjに対する行のCOLS()) に対について>>> x_product_pairs ...印刷対...(1、56 )(1,2 )(1,1 )(2、56 )(2,2 ) (2、1 )(3、56 )(3,2 )(3,1 )(17、56 )、(17、2 )(17、1)
(2)再構成されたサンプル
行の最大ファイル長を取得します。
1 F =オープン(' の/ etc / MOTD '、' R ' ) 2 3 = MAX((x.stripを())lenの最長のために X でF) 4 5 f.close() 6 7 戻り最長
次のように簡略化:
1つの 戻りマックス(LEN(x.strip())のために X で(オープン' の/ etc / MOTD '))