Python学習ノート『Pythonコアプログラミング』第8章条件とループ
7199 ワード
if文
3つのセクションで構成されています.キーワード自体、結果の真偽を判断するための条件式、および式が真または非ゼロの場合に実行されるコードブロックです.
if expression:
expr_true_suite
ブールオペレータand or notを使用することで多重判定条件を実現できます
if not warn and (system_load >= 10):
print "WARNING:losing resources"
warn +=1
複合文のコードブロックに1行のコードしか含まれていない場合は、1行に書くことができます.
if make_hard_copy:send_data_to_printer()
else文
if expression:
expr_true_suite
else:
expr_true_suite
elif(すなわちelse-if)文------pythonはswitch/case文をしばらくサポートしていません.
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
elif expressionN:
exprN_true_suite
else:
none_of_the_abave_suite
条件式(トリプルオペレータ)じょうけんしき
X if C else Y
while文
while expression:
suite_to_repeat
for文:
for iter_var in iterable:#毎回ループ、iter_var反復変数は、反復可能なオブジェクトの現在の要素として設定され、文に使用されます.
suite_to_repeat
pass文:
def foo_func():
pass#は、他のコードに干渉することなく、構造を先に決定するために使用できます.
range()完全構文
range(start,end,step=1)#は、start<=krange()簡略構文
range(end)#startデフォルトは0、stepデフォルトは1
range(start,end)
シーケンスに関連する組み込み関数:
sorted()reversed()#はシーケンス(リスト)を返します.
Enumerate()zip()は、反復器zip()を返して2つのリストを圧縮します...?
break文、現在のループを終了して次の文にジャンプします.
continue文:現在のループを終了し、残りの文を無視してループの先頭に戻り、次のループを開始します.
注意:whileおよびforループではelse文が使用されます.ループで使用する場合、else句はループが完了した後にのみ実行され、break文はelseブロックをスキップします.
反復器とiter()関数
反復器の動作原理:
辞書の反復器またはその遍歴キー.for eachKey in myDict.keys()はfor eachKey in myDictと略記できます
ファイル:ファイルオブジェクトによって生成された反復器はreadline()メソッドを自動的に呼び出し、テキストファイルのすべてのローにアクセスできます.for eachLine in myFileを使用してテキストファイルを反復できます
リスト解析:[expr for iter_var in iterable]
コアはforループで、iterableオブジェクトのすべてのエントリを反復します.前のexprはシーケンスの各メンバーに適用され、最後の結果値は式によって生成されたリストです.
拡張構文:[expr for iter_var in iterable if cond_expr]
この構文は反復時に条件式cond_を満たすフィルタまたは取得します.exprのシーケンスメンバー
ジェネレータ:特定の関数で、値を返すことができます.その後、コードのセンシングを一時停止し、後で復元します.
ジェネレータ表現(expr for iter_var in iterable if cond_expr):ジェネレータはメモリでより使いやすい構造です.
階乗関数:
factorial(10) # 3628800
3つのセクションで構成されています.キーワード自体、結果の真偽を判断するための条件式、および式が真または非ゼロの場合に実行されるコードブロックです.
if expression:
expr_true_suite
ブールオペレータand or notを使用することで多重判定条件を実現できます
if not warn and (system_load >= 10):
print "WARNING:losing resources"
warn +=1
複合文のコードブロックに1行のコードしか含まれていない場合は、1行に書くことができます.
if make_hard_copy:send_data_to_printer()
else文
if expression:
expr_true_suite
else:
expr_true_suite
if passwd == user.passwd:
ret_str = "password accepted"
id = user.id
valid = True
else:
ret_str = "invalid password entered....try again!"
valid = False
elif(すなわちelse-if)文------pythonはswitch/case文をしばらくサポートしていません.
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
elif expressionN:
exprN_true_suite
else:
none_of_the_abave_suite
条件式(トリプルオペレータ)じょうけんしき
X if C else Y
while文
while expression:
suite_to_repeat
for文:
for iter_var in iterable:#毎回ループ、iter_var反復変数は、反復可能なオブジェクトの現在の要素として設定され、文に使用されます.
suite_to_repeat
pass文:
def foo_func():
pass#は、他のコードに干渉することなく、構造を先に決定するために使用できます.
range()完全構文
range(start,end,step=1)#は、start<=k
range(end)#startデフォルトは0、stepデフォルトは1
range(start,end)
シーケンスに関連する組み込み関数:
sorted()reversed()#はシーケンス(リスト)を返します.
Enumerate()zip()は、反復器zip()を返して2つのリストを圧縮します...?
break文、現在のループを終了して次の文にジャンプします.
continue文:現在のループを終了し、残りの文を無視してループの先頭に戻り、次のループを開始します.
注意:whileおよびforループではelse文が使用されます.ループで使用する場合、else句はループが完了した後にのみ実行され、break文はelseブロックをスキップします.
反復器とiter()関数
反復器の動作原理:
>>> myTuple
(123, 'zav', 45.33)
>>> i = iter(myTuple)
>>> i.next()
123
>>> i.next()
'zav'
>>> i.next()
45.33
>>> i.next()
Traceback (most recent call last):
File "<pyshell#39>", line 1, in <module>
i.next()
StopIteration
辞書の反復器またはその遍歴キー.for eachKey in myDict.keys()はfor eachKey in myDictと略記できます
legends = {('poe','wei'):('123','3444','34244'),('jasdlf','adsfasd'):(123,3434,343434)}
for eachLegend in legends:
print 'Name: %s\tOccupation: %s' % eachLegend
print ' birth: %s\tDeath:%s\tALBUM:%s
' % legends[eachLegend]
ファイル:ファイルオブジェクトによって生成された反復器はreadline()メソッドを自動的に呼び出し、テキストファイルのすべてのローにアクセスできます.for eachLine in myFileを使用してテキストファイルを反復できます
myFile = open('config-win.txt')
for eachLine in myFile:
print eachLine,
リスト解析:[expr for iter_var in iterable]
コアはforループで、iterableオブジェクトのすべてのエントリを反復します.前のexprはシーケンスの各メンバーに適用され、最後の結果値は式によって生成されたリストです.
[x ** 2 for x in range(10)] #[0, 1, 4, 9, 16, 25, 36, 49, 64, 81] []
拡張構文:[expr for iter_var in iterable if cond_expr]
この構文は反復時に条件式cond_を満たすフィルタまたは取得します.exprのシーケンスメンバー
seq = [11,12,13,1,4,34,45,56,6,67,78,3]
[x for x in seq if x%2] #[11, 13, 1, 45, 67, 3]
ジェネレータ:特定の関数で、値を返すことができます.その後、コードのセンシングを一時停止し、後で復元します.
ジェネレータ表現(expr for iter_var in iterable if cond_expr):ジェネレータはメモリでより使いやすい構造です.
階乗関数:
def factorial(n):
if n>1:
return n*factorial(n-1)
else:
return 1
factorial(10) # 3628800