美文网首页Python
Python中的列表和字典遍历

Python中的列表和字典遍历

作者: 逆风g | 来源:发表于2018-10-29 20:43 被阅读182次

    列表、字典的遍历有很多技巧,如何写出简洁优雅的代码,可能需要了解如下知识:

    • 列表遍历
    • 字典遍历
    • 列表迭代器
    • 字典迭代器
    • 列表生成式
    • 字典生成式
    • 列表生成器

    列表遍历

    1. 直接遍历列表元素
    list = ['zhangsan', 'lisi', 'wanger', 'mazi']
    for value in list:
        print value
    
    zhangsan
    lisi
    wanger
    mazi
    
    1. 利用索引遍历列表元素
    list = ['zhangsan', 'lisi', 'wanger', 'mazi']
    for i in range(len(list)):
        print list[i]
    
    zhangsan
    lisi
    wanger
    mazi
    
    1. 利用枚举遍历列表的索引对应的元素
    list = ['zhangsan', 'lisi', 'wanger', 'mazi']
    for i, value in enumerate(list):
        print i, value
    
    0 zhangsan
    1 lisi
    2 wanger
    3 mazi
    

    字典遍历

    1. 直接遍历字典元素,值为key
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for key in dict:
        print key, dict[key]
    
    age 20
    name zhangsan
    sex man
    
    1. 遍历字典的key
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for key in dict.keys():
        print key, dict[key]
    
    age 20
    name zhangsan
    sex man
    
    1. 遍历字典的value
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for value in dict.values():
        print value
    
    20
    zhangsan
    man
    
    1. 利用枚举遍历字典的索引key
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for key, value in enumerate(dict):
        print key, value
    
    0 age
    1 name
    2 sex
    
    1. 利用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
    

    字典迭代器

    1. 利用items的迭代器遍历字典
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for key, value in dict.iteritems():
        print key, value
    
    age 20
    name zhangsan
    sex man
    
    1. 利用keys的迭代器遍历字典
    dict = {'name': 'zhangsan', 'age': '20', 'sex': 'man'}
    for key in dict.iterkeys():
        print key, dict[key]
    
    age 20
    name zhangsan
    sex man
    
    1. 利用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]

    1. 嵌套的列表生成式
    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]
    
    1. 带有函数的列表生成式
    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()、或者遍历的方式获取元素。为什么要说生成器,因为当列表长度很长时,太费内存,使用生成器则每次都是推算出来的当前元素,没有一次性的保存所有元素,和前面所说的迭代器是一个道理。

    1. 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
    
    1. 遍历方式
    b = (i for i in range(6,10,1))
    for i in b:
        print i
    
    6
    7
    8
    9
    

    相关文章

      网友评论

        本文标题:Python中的列表和字典遍历

        本文链接:https://www.haomeiwen.com/subject/qwkbtqtx.html