• python 3 基础之各种推导式(列表、字典、集合)


    1、列表推导式

      1.1、普通列表推导式

      用于快速创建一个有规律的列表,如下代码:

    my_list = [i * i for i in range(1, 10)]
    
    print(my_list)
    
    ========================
    运行结果:
    [1, 4, 9, 16, 25, 36, 49, 64, 81]

      相当于以下代码

    my_list = []
    for i in range(1,10):
        my_list.append(i * i)
    print(my_list)

      代码理解:先将执行for循环,然后将每个 i 代入表达式   i * i 中,将运算结果循环添加到空列表中,得到最终结果

      1.2、增加条件语句和多个循环

      增加条件语句

      推导式创建1~50之间偶数的列表

    # 列表推导式创建一个1~50之间的偶数列表
    my_list = [i for i in range(1,51) if i % 2 == 0]
    print(my_list)
    
    运行结果:[2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50]
    
    ==================================================
    
    # 非推导式创建
    my_list = []
    # for循环
    for i in range(1,51):
        if i % 2 == 0:
            my_list.append(i)
    print(my_list)
    # 跟上面代码运行结果一致

      循环循环嵌套

    # 列表推导式创建for循环嵌套的列表
    my_list = [a + b for a in '123' for b in 'abc']
    print(my_list)
    
    ===================================================
    
    # 非推导式创建列表
    my_list1 = []
    for a in '123':
        for b in 'abc':
            my_list1.append(a + b)
    print(my_list1)
    
    # 两者运行结果一样:['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']

    2、字典推导式

      相对于列表,看冒号两边,一边属于字典的key ,一边是字典的value

    # 字典用推导式创建
    dic = {x: x ** 2 for x in (2, 4, 6)}
    print(dic)
    # 非推导式创建
    dict = {}
    for x in (2,4,6):
        dict[x] = x ** 2
    print(dict)
    
    ====================================
    两段代码运行结果一致:{2: 4, 4: 16, 6: 36}

    3、集合推导式

      创建一个空集合用 set(),因为  {}  是创建的空字典

    # 推导式创建集合
    a = {x for x in 'abracadabra' if x not in 'abc'}
    print(a)
    # 非推导式创建集合
    b = set()
    for x in 'abracadabra':
        if x not in 'abc':
            b.add(x)
    print(b)
    
    ===========================================
    运行结果两段代码一致:{'r', 'd'}

    推导式没有元组,圆括号在Python中被用作生成器的语法

    要通过类似方法生成元组,需要显式调用元组的类型转换函数tuple(),如下:

    tup = tuple(x for x in range(9))
    print(tup)
    print(type(tup))
    
    ------------------------
    结果:
    (0, 1, 2, 3, 4, 5, 6, 7, 8)
    <class 'tuple'>
  • 相关阅读:
    ubuntu删除django和安装django
    linux shell 统计文件单词出现次数
    linux shell $$、$!特殊符号
    linux安装zabbix需要php两个模块php-bcmach与php-mbstring
    linux 源码编译与卸载
    Job for dhcpd.service failed because the control process exited with error code. See "systemctl status dhcpd.service" and "journalctl -xe" for details.问题
    Linux中部署DNS分离解析技术
    NFS网络文件系统服务搭建
    Samba服务搭建
    Linux RAID磁盘阵列技术
  • 原文地址:https://www.cnblogs.com/will-wu/p/13251459.html
Copyright © 2020-2023  润新知