zoukankan      html  css  js  c++  java
  • Python3-推导式

    Python3-推导式

    • 推导式(又称解析式)提供了一种简明扼要的方法来创建列表、字典、集合,适用于列表、字典、集合等可迭代数据结构(iterables)。
    • 它的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是 0 个或多个 for 或者 if 语句。
    • 执行顺序是依次往后执行(for-->for/if-->for/if......)

    一、列表推导式

    1、只有一个for循环
    l = [1, 2, 3, 4, 5]
    ls = [x * 2 for x in l]
    # 执行结果:[2, 4, 6, 8, 10]
    # 执行顺序:
    for x in l:
        x * 2
    
    2、带if判断
    ls = [x * 2 for x in l if x > 3]
    # 执行结果:[8, 10]
    # 执行顺序:
    for x in l:
        if x > 3:
            x * 2
    
    3、多个for
    ls = [x * y for x in l for y in range(5)]
    # 执行结果:[0, 1, 2, 3, 4, 0, 2, 4, 6, 8, 0, 3, 6, 9, 12, 0, 4, 8, 12, 16, 0, 5, 10, 15, 20]
    # 执行顺序:
    for x in l:
        for y in range(5):
            x * y
    
    
    4、多个for和一个if判断
    ls = [x * y for x in l for y in range(5) if x > 3]
    # 执行结果:[0, 4, 8, 12, 16, 0, 5, 10, 15, 20]
    # 执行顺序:
    for x in l:
        for y in range(5):
            if x > 3:
                x * y
    
    5、多个for多个if
    ls = [x * y for x in l for y in range(5) if x > 3 if y > 3]
    # 执行结果:[16, 20]
    # 执行顺序:
    for x in l:
        for y in range(5):
            if x > 3:
                if y > 3:
                    x * y
    

    从for循环演变成列表推导式

    for循环:
    ls = []
    for n in range(1, 5):
        for m in range(1, n + 1):
            ls.append(n * m)
    # [1, 2, 4, 3, 6, 9, 4, 8, 12, 16]
    
    列表推导式:
    ls = [n * m for n in range(1, 5) for m in range(1, n + 1)]
    # [1, 2, 4, 3, 6, 9, 4, 8, 12, 16]
    

    二、字典推导式

    把一个字典的key和value互换:

    dict1 = {'s1': 'a ', 's2': 'b', 's3': 'c'}
    changed = {value: key for key, value in dict1.items()}
    print(changed)
    # =======运行结果
    # {'a ': 's1', 'b': 's2', 'c': 's3'}
    

    三、集合推导式

    跟列表推导式不同的是列表是[],集合是{},集合中不允许有重复数据

    # 集合推导式
    s = {x**2 for x in [1, 1, 2]}
    print(s) # {1, 4}
    print(type(s)) # <class 'set'>
    
    # 列表推导式
    s1 = [x ** 2 for x in [1, 1, 2]]
    print(s1) # [1, 1, 4]
    print(type(s1)) # <class 'list'>
    

    以上就是推导式的简单使用,推导式简单的说就是把普通的多行for循环压缩成一行代码,这种压缩语法适用于列表、字典、集合等可迭代数据结构(iterables)。

    【完】


  • 相关阅读:
    [转载自 文顶顶]iOS开发UI篇—程序启动原理和UIApplication
    中专生自学Android到找到工作的前前后后
    HashCode与IEqualityComparer接口
    abp vnext使用记录之微服务
    asp.net core 外部认证多站点模式实现
    xamarin.android 绑定百度地图SDK遇到的问题
    asp.net core 之多语言国际化自定义资源文件
    asp.net core tags 扩展之 id 和 name
    asp.net 后台任务作业框架收集
    向量
  • 原文地址:https://www.cnblogs.com/desireyang/p/12160332.html
Copyright © 2011-2022 走看看