推定ルーチン
これまでに、最も単純なリスト内包表記とジェネレータ式を学習しました。しかし、それに加えて、実際には辞書の派生、セットの派生などがあります。
以下は、リスト誘導を例として使用した誘導タイプの詳細な形式です。これは、他の誘導タイプにも適用できます。
variable = [out_exp == 2の場合、input_listのout_expのout_exp_res] out_exp_res:リスト生成要素の式。戻り値を持つ関数にすることができます。 input_listのout_expの場合:input_listを繰り返し、out_expをout_exp_res式に渡します。 if out_exp == 2:条件に従って、どの値をフィルタリングできるか。
リストの理解
例1:30以内で3で割り切れるすべての数値
multiples = [i%3 is 0の場合、範囲内のi for i(30)] print(multiples) #出力:[0、3、6、9、12、15、18、21、24、27]
例2:30以内で3で割り切れるすべての数値の2乗
def squared(x): return x * x multiples = [squared(i)for i in range(30)if i%3 is 0]] print(multiples)
例3:ネストされたリストで2つの「e」を持つすべての名前を検索する
names = [['Tom'、 'Billy'、 'Jefferson'、 'Andrew'、 'Wesley'、 'Steven'、 'Joe']、 ['Alice'、 'Jill'、 'Ana'、 'Wendy'、 'Jennifer'、 'Sherry'、 'Eva']] print([name.count( 'e')> = 2 if if lstの名前の名前のlstの名前)トラバーサル順序に注意してください。これは実装の鍵です
辞書の理解
例1:辞書のキーと値を交換する
mcase = {'a':10、 'b':34} mcase_frequency = {mcase [k]:k for k in mcase} print(mcase_frequency)
例2:大文字と小文字に対応する値の値を組み合わせ、kを小文字に統一する
mcase = {'a':10、 'b':34、 'A':7、 'Z':3} mcase_frequency = {k.lower():mcase.get(k.lower()、0)+ mcase .get(k.upper()、0)mcase.keys()}のkの場合は print(mcase_frequency)
理解度を設定する
例:独自の重複排除機能を使用して、リスト内の各値の二乗を計算します
squared = {x ** 2 for x in [1、-1、2]} print(squared) #出力:set([1、4])
練習問題:
例1:長さが3未満の文字列のリストをフィルターで除外し、残りを大文字に変換する
例2:(x、y)を検索します。ここで、xは0〜5の偶数で、yは0〜5の奇数の祖先リストです。
例3:Mで3,6,9のリストを検索M = [[1,2,3]、[4,5,6]、[7,8,9]]
1. [name.upper()の場合、names in names if len(name)> 3] 2。[(x、y)for x in range(5)if x%2 == 0 for y in range(5)if y%2 == 1] 3. [Mの行の行[2]]