• 速战速决 Python python 高级: 推导式,zip


    速战速决 Python https://github.com/webabcd/PythonSample
    作者 webabcd

    速战速决 Python - python 高级: 推导式,zip

    示例如下:

    advanced/comprehension.py

    # comprehension 推导式
    # 一种简单的“把一个或多个列表或集合或字典通过指定的规则生成一个新的列表或集合或字典”的方法
    
    a = [1, 2, 3, 4, 5]
    b = {1, 2, 3, 4, 5}
    c = {"k1":1, "k2":2, "k3":3, "k4":4, "k5":5}
    
    # 取出列表 a 中的偶数,并生成一个新的列表
    d = [x for x in a if x % 2 == 0]
    # 取出集合 b 中的偶数,并生成一个新的集合
    e = {x for x in b if x % 2 == 0}
    # 取出字典 c 中的 value 为偶数的 k/v,并生成一个新的字典
    f = {k:v for k,v in c.items() if v % 2 == 0}
    print(d) # [2, 4]
    print(e) # {2, 4}
    print(f) # {'k2': 2, 'k4': 4}
    
    # 通过嵌套循环生成一个元组列表
    g = [(x,y) for x in range(2) for y in range(3)] 
    print(g) # [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
    
    # 通过嵌套循环生成一个元组列表,同时指定规则
    h = [(x,y) for x in range(2) if x % 2 == 0 for y in range(3) if y % 2 == 0] 
    print(h) # [(0, 0), (0, 2)]
    
    # 通过嵌套循环生成一个字典
    i = {f"k{x}_{y}":f"v{x}_{y}" for x in range(2) for y in range(3)}
    print(i) # {'k0_0': 'v0_0', 'k0_1': 'v0_1', 'k0_2': 'v0_2', 'k1_0': 'v1_0', 'k1_1': 'v1_1', 'k1_2': 'v1_2'}
    
    # 通过嵌套推导式生成一个二维列表
    j = [[0 for col in range(2)] for row in range(3)] # 推导式也是可以嵌套的
    print(j) # [[0, 0], [0, 0], [0, 0]]
    
    # 可以在推导式中使用函数
    def plus(a, b):
        return a + b
    k = [plus(x,y) for x in range(2) for y in range(3)] 
    print(k) # [0, 1, 2, 1, 2, 3]
    

    advanced/zip.py

    # zip - 将多个可迭代对象压缩为一个可迭代对象,将一个可迭代对象解压缩为多个可迭代对象
    
    a = [1, 2, 3]
    b = [4, 5, 6]
    
    
    # 将多个可迭代对象压缩为一个可迭代对象(把多个可迭代对象的相同索引位置的数据取出来,并组成新的可迭代对象的元素)
    c = zip(a, b) 
    d = list(c)
    print(c) # 一个 zip 对象
    print(d) # [(1, 4), (2, 5), (3, 6)]
    
    
    # 将一个可迭代对象解压缩为多个可迭代对象(把一个可迭代对象的每个元素的相同索引位置的数据取出来,并分别组成多个可迭代对象)
    e, f = zip(*[[1, 4], [2, 5], [3, 6]])      
    print(e) # (1, 2, 3)
    print(f) # (4, 5, 6)
    
    g, h = zip(*([1, 4], [2, 5], [3, 6]))      
    print(g) # (1, 2, 3)
    print(h) # (4, 5, 6)
    
    i, j = zip(*[(1, 4), (2, 5), (3, 6)])      
    print(i) # (1, 2, 3)
    print(j) # (4, 5, 6)
    

    速战速决 Python https://github.com/webabcd/PythonSample
    作者 webabcd

  • 相关阅读:
    程序员书单
    36条极简人生建议
    Nacos
    jvm详解
    22种世界500强都在用的高效工作方法,你了解几种?
    道德经39经典
    积累的力量
    JUC之线程间定制化通信
    JVM调优参考
    docker开机启动和dockercompose开机启动执行相应的各个docker容器
  • 原文地址:https://www.cnblogs.com/webabcd/p/python_advanced_comprehension_advanced_zip.html
Copyright © 2020-2023  润新知