zoukankan      html  css  js  c++  java
  • python zip()的使用

    zip()函数将可迭代的对象作为参数,将对象对应的元素打包成一个个元祖,然后返回由这些元祖组成的对象,我们可以使用list()转换成列表

    如果各个迭代器的元素个数不一致,则返回列表长度和最小的对象相同,用*好操作符,可以将元祖解压为列表

    1.两个或者多个list

    a=[1,2,3]
    b=[4,5,6]
    c=[7,8,9,10]    
    
    #两个list去zip()
    zip(a,b)
    
    #三个list去zip(),返回的对象的长度和最小的迭代器一致
    zip(a,b,c)
    
    #用list()查看zip后的数据
    list(zip(a,b))  #[(1, 4), (2, 5), (3, 6)]
    list(zip(a,b,c))  #[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
    
    #使用zip(*zip())解压
    a1,b1=zip(*zip(a,b))
    
    #两个list迭代输出
    for i,j in zip(a,b):
        print(i,j)
        
    输出:
    1 4
    2 5
    3 6

    2.如有两个list,一个是一层,一个是嵌套,要组成一个dict 

    #将zip对象转换成字典看看
    a=[1,2,3]
    d=[['a','b','c'],['aa','bb','cc'],['aaa','bbb','ccc']]
    
    dict(zip(a,d))  #{1: ['a', 'b', 'c'], 2: ['aa', 'bb', 'cc'], 3: ['aaa', 'bbb', 'ccc']}
    #如果一个是key值,一个内层list就是一行value
    [dict(zip(a,value)) for value in d]  #[{1: 'a', 2: 'b', 3: 'c'},
     {1: 'aa', 2: 'bb', 3: 'cc'},
     {1: 'aaa', 2: 'bbb', 3: 'ccc'}]
    
    #或者是    
    l=[]
    for value in d:
        dict={}
        for i in range(len(value)):
            dict[a[i]]=value[i]
        l.append(dict)
        

    3.同时遍历两个dict

    如果长度相同的dict直接用zip函数即可同时for
    如果长度不同,可以先把这两个dict整合进一个list再for

    dict_1=dict(zip(a,b))  #{1: 4, 2: 5, 3: 6}
    dict_2=dict(zip(a,d))  # {1: ['a', 'b', 'c'], 2: ['aa', 'bb', 'cc'], 3: ['aaa', 'bbb', 'ccc']}
    
    
    #key的遍历
    for i,j in zip(dict_1,dict_2):
        print(i,j)
    
    输出:
    1 1
    2 2
    3 3
    
    #values的遍历
    for i ,j in zip(dict_1.values(),dict_2.values()):
        print(i,j)
    输出:
    4 ['a', 'b', 'c']
    5 ['aa', 'bb', 'cc']
    6 ['aaa', 'bbb', 'ccc'] 
    
    #同时遍历,需要2个dict的value都是多层的
    dict_4=dict(zip(b,d))   #{4: ['a', 'b', 'c'], 5: ['aa', 'bb', 'cc'], 6: ['aaa', 'bbb', 'ccc']}
    for i,j in zip(dict_4,dict_2):
        for k in dict_4[i]:
            print(i,k)
        for m in dict_2[j]:
            print(j,m)
    
    输出:
    4 a
    4 b
    4 c
    1 a
    1 b
    1 c
    5 aa
    5 bb
    5 cc
    2 aa
    2 bb
    2 cc
    6 aaa
    6 bbb
    6 ccc
    3 aaa
    3 bbb
    3 ccc
  • 相关阅读:
    周总结9
    TDtree冲刺第十天
    规划极限编程阅读笔记03
    TDtree冲刺第九天
    TDtree第八天
    规划极限编程阅读笔记02
    TDtree冲刺第七天
    周总结8
    TDtree冲刺第六天
    11/1
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/13328867.html
Copyright © 2011-2022 走看看