• python之列表推导式


    1. 定义

    用一行构建代码

    例题
    # 构建一个1-100的列表
    l1 = [i for i in range(1,101)]
    print(l1)
    
    # 输出结果
    [1,2,3,4,5,6,...100]
    

    2. 两种构建方式

    2.1 循环模式: [变量(加工后的变量) for 变量 in iterable]

    例题
    1. 将10以内所有整数写入列表
    print([i for i in range(1,11)])
    # 输出结果
    [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    
    2. 将10以内所有整数的平方写入列表。
    print([i**2 for i in range(1, 11)])
    
    3. 100以内所有的偶数写入列表.
    print([i for i in range(2, 101, 2)])
    
    4. 从python1期到python100期写入列表list
    print([f'python{i}期' for i in range(1, 101)])
    
    练习题
    l1 = [i*i for i in range(1,11)]
    print(l1)
    
    l2 = [i for i in range(1,101) if i % 2 == 0]
    print(l2)
    
    l3 = [f'python{i}期' for i in range(1,101)]
    
    print(l3)
    

    2.2 筛选模式: [变量(加工后的变量) for 变量 in iterable if 条件] 增加一个判断

    例题
    # 构建一个列表,要求元素大于4
    print([i for i in range(11) if i > 4])
    
    # 输出结果:
    [5, 6, 7, 8, 9, 10]
    
    练习题
    1. 10以内大于4的数
    
    # print([i for i in range(11) if i > 4])
    print([i for i in range(1,31) if i % 3 == 0])
    
    
    2. 30以内可以被三整除的数。
    # 过滤掉长度小于3的字符串列表,并将剩下的转换成大写字母
    l1 = ['太白金星', 'fdsaf', 'alex', 'sb', 'ab']
    
    l2 = [i.upper() for i in l1 if len(i) > 3]
    print(l2)
    
    
    3. 找到嵌套列表中名字含有两个‘e’的所有名字(有难度)
    names = [['Tom', 'Billy', 'Jefferson', 'Andrew', 'Wesley', 'Steven', 'Joe'],
             ['Alice', 'Jill', 'Ana', 'Wendy', 'Jennifer', 'Sherry', 'Eva']]
    # 方法一: 普通方法
    l4 = []
    for i in names:
        for j in i:
            if j.count('e') >= 2:
                l4.append(j)
    print(l4)
    
    # 方法二: 列表推导式方法
    print([j for i in names for j in i if j.count('e') >= 2 ])
    
    

    3. 列表推导式的优缺点

    优点:

    ​ 简单,快捷,装b

    缺点:

    ​ 可读性不高,不好排错

  • 相关阅读:
    【读书笔记】:MIT线性代数(1):Linear Combinations
    Adam Optimization Algorithm
    CSS 对齐方式
    CSS Position
    设置Table边框的CSS
    p_CreateAuditEntry
    Entity FramWork Code first 使用心得
    CRM 配置 ADFS后,使用自定义STS遇到的问题总结
    Sql Server Always On主库与附库遇到的问题
    ADFS 登录页面自定义
  • 原文地址:https://www.cnblogs.com/zanao/p/11061738.html
Copyright © 2020-2023  润新知