Python入門の導出式
1508 ワード
Python入門の導出式
導出式とは,比較的規則的なリスト,生成器,辞書などを構築する簡便な方法である.
1、導出式
(1)リスト導出式:
<1>通常ループ:[変数forループ]
<2>フィルタモード:[加工後の変数forサイクル加工条件]
(2)集合導出式:
<1>通常ループ:{変数forループ}
<2>フィルタモード:{加工後の変数forサイクル加工条件}
(3)辞書導出式:
<1>通常ループ:{キー:値forループ}
<2>フィルタ:{加工後のキー:値forサイクル加工条件}
(4)ジェネレータ導出式:
<1>通常ループ:(変数forループ)
<2>フィルタ:(加工後の変数forサイクル加工条件)
2、ジェネレータ式とリスト導出式の違い:
(1)リスト導出式はメモリ消費量を比較し,すべてのデータを一度にメモリにロードする.ジェネレータ式は反復プロトコルに従い、要素を1つずつ生成します.
(2)得られた値は異なる、リスト導出式は1つのリストである.ジェネレータ式はジェネレータを取得します
(3)リスト導出式は一目瞭然であり,ジェネレータ式はメモリアドレスにすぎない.
ジェネレータ式にしても、リスト導出式にしても、Pythonが提供する比較的簡単な構造方式にすぎません.導出式を使うのは非常に簡単なので、多くの人が夢中になっています.これは慎重にしなければなりません.導出式は比較的複雑で規則的なオブジェクトしか構築できません.規則がない場合は、また,ネスト層数が比較的多い(forサイクルが3層を超える)ため,導出式構築は推奨されない.
ジェネレータの不活性なメカニズム:ジェネレータはアクセスする時だけ値を取り、はっきり言った.君は彼に頼んでこそ君に値打ちがある.彼に頼まない.彼は実行しない.
導出式とは,比較的規則的なリスト,生成器,辞書などを構築する簡便な方法である.
1、導出式
(1)リスト導出式:
<1>通常ループ:[変数forループ]
print([i for i in range(10)])
<2>フィルタモード:[加工後の変数forサイクル加工条件]
print([i for i in range(10) if i % 2 ==0])
(2)集合導出式:
<1>通常ループ:{変数forループ}
print({i for i in range(10)})
<2>フィルタモード:{加工後の変数forサイクル加工条件}
print({i for i in range(10) if i % 2 == 1})
(3)辞書導出式:
<1>通常ループ:{キー:値forループ}
print({i: i+1 for i in range(10)})
<2>フィルタ:{加工後のキー:値forサイクル加工条件}
print({i: i+1 for i in range(10) if i % 2 == 0})
(4)ジェネレータ導出式:
<1>通常ループ:(変数forループ)
tu = (i for i in range(10))
<2>フィルタ:(加工後の変数forサイクル加工条件)
# tu = (i for i in range(10) if i > 5)
(pyhton3: range() | python2 :xrange()) __iter__()
__iter__() __next__()
2、ジェネレータ式とリスト導出式の違い:
(1)リスト導出式はメモリ消費量を比較し,すべてのデータを一度にメモリにロードする.ジェネレータ式は反復プロトコルに従い、要素を1つずつ生成します.
(2)得られた値は異なる、リスト導出式は1つのリストである.ジェネレータ式はジェネレータを取得します
(3)リスト導出式は一目瞭然であり,ジェネレータ式はメモリアドレスにすぎない.
ジェネレータ式にしても、リスト導出式にしても、Pythonが提供する比較的簡単な構造方式にすぎません.導出式を使うのは非常に簡単なので、多くの人が夢中になっています.これは慎重にしなければなりません.導出式は比較的複雑で規則的なオブジェクトしか構築できません.規則がない場合は、また,ネスト層数が比較的多い(forサイクルが3層を超える)ため,導出式構築は推奨されない.
ジェネレータの不活性なメカニズム:ジェネレータはアクセスする時だけ値を取り、はっきり言った.君は彼に頼んでこそ君に値打ちがある.彼に頼まない.彼は実行しない.