• Python的推导式与三目运算符


    列表推导式

    列表推导式可以简化列表循环

    • 格式表达式 for 变量 in 列表 [if 条件语句](中括号里的内容代表可省略)
    • 使用方式
    """快速生成一个包含1-20数字的列表"""
    list1 = [i for i in range(1,21)]
    """快速生成一个包含1-20之间能被3整除的所有数字列表"""
    list2 = [i for i in range(1,21) if i%3==0]
    """快速生成一个包含1-20之间能被3整除的所有数字的平方列表"""
    list3 = [i*i for i in range(1,21) if i%3==0]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 替代for循环和filter函数:过滤出列表中所有是偶数的数字
    test = [1,2,3,4,5,6,7,8,9,10]
    """使用普通循环"""
    list1 = []
    for i in test:
    	if i%2==0:
            list1.append(i)
    """使用filter"""
    list2 = list(filter(lambda i:i%2==0,test))
    """使用列表推导式"""
    list3 = [i for i in test if i%2==0]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 替代for循环和map函数:将列表中所有的字符串转为整数
    test = ["1","2","3","4","5","6","7","8","9","10"]
    """使用普通循环"""
    list1 = []
    for i in test:
    	list1.append(int(i))
    """使用filter"""
    list2 = list(map(lambda i:int(i),test))
    """使用列表推导式"""
    list3 = [int(i) for i in test]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 注意:列表推导式适用于单层循环,当出现两层及以上多层循环使用推导式反而会适得其反,尽管简化了代码,但会使得简化后的代码内容变的晦涩难懂,结构也不清晰,十分不宜与阅读和修改。
    """使用普通循环"""
    list1 = []
    for i in range(1,5):
        for j in range(1,i):
            if j%2 == 0:
                list1.append((i,j))
    """使用列表推导式"""
    list2 = [(i,j) for i in range(1,5) for j in range(1,i) if j%2==0]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    字典推导式

    字典推导式可以简化字典循环

    • 格式:{v: k for k, v in 字典 [if 条件语句]} (中括号里的内容代表可省略)
    • 举例1:将字典中key值转化为大写
    test = {"a":5,"B":10,"c":15,"D":20}
    """使用普通循环"""
    dict1 = {}
    for k,v in test.items():
        dict1[k.upper()] = v
    """使用字典推导式"""
    dict2 = {k.upper():v for k,v in test.items()}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 举例2:过滤出字典中中所有value是偶数的键值对
    test = {"a":5,"B":10,"c":15,"D":20}
    """使用普通循环"""
    dict1 = {}
    for k,v in test.items():
        if v%2==0:
        	dict1[k] = v
    """使用字典推导式"""
    dict2 = {k:v for k,v in test.items() if v%2==0}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    三目运算符

    三目运算符可以简化选择

    • 格式:exp1 if 条件语句 else exp2

    • 运行过程:如果条件语句为真,就执行并返回exp1,否则就执行并返回 exp2

    """简化前"""
    if a>b:
        max = a;
    else:
        max = b;
    """简化后"""
    max = a if a>b else b
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    (JAVA)认识Java中的数据类型和变量
    【大数据平台】从Hadoop到Spark安装配置教程
    如何将枯燥的大数据进行可视化处理?
    1023 Have Fun with Numbers
    使用电力系统稳定器 (PSS) 和静态 VAR 补偿器 (SVC) 提高瞬态稳定性(Matlab代码实现)
    iptables学习
    ARMv8内存模型
    Kubernetes部署(八):k8s项目交付----(5)持续部署
    高企申报需要的专利数量是多少?
    opencv 使用DNN进行物体分类
  • 原文地址:https://blog.csdn.net/qq_40910781/article/details/126053897