Pythonのリストと辞書の遍歴

5025 ワード

リスト、辞書の遍歴には多くのテクニックがあり、簡潔で優雅なコードをどのように書くかは、次の知識が必要かもしれません.
  • リスト
  • を巡る
  • 辞書
  • を巡る
  • リスト反復器
  • ディクショナリ反復器
  • リスト生成式
  • 辞書生成式
  • リストジェネレータ
  • リストの遍歴
  • リスト要素
  • を巡回する.
    list = ['zhangsan', 'lisi', 'wanger', 'mazi']
    for value in list:
        print value
    
    zhangsan
    lisi
    wanger
    mazi
    
  • を利用してリスト要素
  • を巡回する.
    list = ['zhangsan', 'lisi', 'wanger', 'mazi']
    for i in range(len(list)):
        print list[i]
    
    zhangsan
    lisi
    wanger
    mazi
    
  • は、 を使用してリストの および
  • を巡回する.
    list = ['zhangsan', 'lisi', 'wanger', 'mazi']
    for i, value in enumerate(list):
        print i, value
    
    0 zhangsan
    1 lisi
    2 wanger
    3 mazi
    

    辞書の遍歴
  • 辞書要素を巡りkey
  • の値を持つ
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for key in dict:
        print key, dict[key]
    
    age 20
    name zhangsan
    sex man
    
  • 辞書を巡るkey
  • dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for key in dict.keys():
        print key, dict[key]
    
    age 20
    name zhangsan
    sex man
    
  • 辞書を巡るvalue
  • dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for value in dict.values():
        print value
    
    20
    zhangsan
    man
    
  • を利用して辞書の key
  • を遍歴する.
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for key, value in enumerate(dict):
        print key, value
    
    0 age
    1 name
    2 sex
    
  • itemsを利用して辞書のkeyvalue
  • を遍歴する.
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for key, value in dict.items():
        print key, value
    
    age 20
    name zhangsan
    sex man
    

    リスト反復
    上記の遍歴方式はメモリを非常に消費し、反復器を使用してメモリの使用を大幅に削減します.
    list = ['zhangsan', 'lisi', 'wanger', 'mazi']
    for value in iter(list):
        print value
    
    zhangsan
    lisi
    wanger
    mazi
    

    ディクショナリ反復器
  • itemsの反復器を用いて辞書
  • を巡回する.
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for key, value in dict.iteritems():
        print key, value
    
    age 20
    name zhangsan
    sex man
    
  • keysの反復器を用いて辞書
  • を巡回する.
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for key in dict.iterkeys():
        print key, dict[key]
    
    age 20
    name zhangsan
    sex man
    
  • valuesの反復器を用いて辞書
  • を巡回する.
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for value in dict.itervalues():
        print value
    
    20
    zhangsan
    man
    

    リスト生成
    リスト生成式基本構文:[exp for iter_var in iterable]フィルタ機能付き:[exp for iter_var in iterable if_exp]ネストループ:[exp for iter_var1 in iterable1 for iter_var2 in iterable2 if_exp]
  • ネストリスト生成式
  • list1 = [1, 2, 3]
    list2 = [4, 5]
    print [x * y for x in list1 for y in list2 if x > 1 and y < 5]
    
    [8, 12]
    
  • 関数付きリスト生成式
  • def handle(x, y):
        if y == 2:
            return [x, x]
        if y == 3:
            return [x, x, x]
    
    
    list1 = [1, 2, 3]
    list2 = [2, 3]
    print [handle(x, y) for x in list1 for y in list2]
    
    [[1, 1], [1, 1, 1], [2, 2], [2, 2, 2], [3, 3], [3, 3, 3]]
    

    ディクショナリ生成式
    辞書生成式はリスト生成式とよく似ていて、一つの例を直接見ます.
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    print {key: value for key, value in dict.items()}
    
    {'age': '20', 'name': 'zhangsan', 'sex': 'man'}
    

    リストジェネレータ
    リストジェネレータは、[]()に変更し、next()、または を使用して要素を取得することができます.なぜジェネレータといえば、リストの長さが長い場合、メモリがかかりすぎるため、ジェネレータを使用すると毎回推定された現在の要素であり、すべての要素を一度に保存していないのは、前述した反復器と同じ理屈です.
  • next()方式
  • a = (i for i in range(5))
    print next(a)
    print next(a)
    print next(a)
    print next(a)
    print next(a)
    
    0
    1
    2
    3
    4
    
  • 遍歴方式
  • b = (i for i in range(6,10,1))
    for i in b:
        print i
    
    6
    7
    8
    9