• Python-入门-推导式


    Python-推导式

    前沿

    Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

    Python 支持各种数据结构的推导式:

    • 列表(list)推导式
    • 字典(dict)推导式
    • 集合(set)推导式
    • 元组(tuple)推导式

    列表推导式

    列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式,使用列表生成式可以节省很多行代码
    语法结构如下:

    # 普通的生成式
    [表达式 for 变量 in 旧列表]
    # 加条件的生成式
    [表达式 for 变量 in 旧列表 if 条件]
    # if...else条件的生成式
    [表达式 if 条件1 else 条件2 for 变量 in 旧列表]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    过滤掉名词字母长度不足4的名字,示例代码如下:

    names = ["Tom", "Lily", "Jack", "Steven", "Bod"]
    # 在不是用列表生成式的过程
    news_names = []
    for name in names:
        if len(name) > 3:
            news_names.append(name)
    print(news_names)  # ['Lily', 'Jack', 'Steven']
    
    
    # 使用列表生成式
    new_names = [name for name in names if len(name) > 3]
    print(new_names)  # ['Lily', 'Jack', 'Steven']
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    将1-100的整数可以被3和5整除的数字组成一个新的列表, 示例代码如下所示:

    # 旧方法
    number_list = []
    for i in range(101):
        if i % 3 == 0 and i % 5 == 0:
            number_list.append(i)
    print(number_list)  # [0, 15, 30, 45, 60, 75, 90]
     
     
    # 列表生成式
    new_num_list = [i for i in range(101) if i % 3 == 0 and i % 5 == 0]
    print(new_num_list)  # [0, 15, 30, 45, 60, 75, 90]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    将0到10的奇数和0到5的偶数组成一个不重复的列表,示例代码如下所示:

    # 将0到10的奇数和0到5的偶数组成一个不重复的列表
    # 旧方法
    news_number_list = []
    for x in range(10):
        if x % 2 != 0:
            for y in range(5):
                if y % 2 == 0:
                    news_number_list.append([x, y])
    print(news_number_list)
    # [[1, 0], [1, 2], [1, 4], [3, 0], [3, 2], [3, 4], [5, 0], [5, 2], [5, 4], [7, 0], [7, 2], [7, 4], [9, 0], [9, 2],[9, 4]]
    
    
    
    # 新方法
    news_num_list = [[x, y] for x in range(10) if x % 2 != 0 for y in range(6) if y % 2 == 0]
    print(news_num_list)
    # [[1, 0], [1, 2], [1, 4], [3, 0], [3, 2], [3, 4], [5, 0], [5, 2], [5, 4], [7, 0], [7, 2], [7, 4], [9, 0], [9, 2],[9, 4]]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    将列表中的数字大于8000的加200 小于等于8000的加500,示例代码如下:

    # 将列表中的数字大于8000的加200 小于等于8000的加500
    number = [5000, 10000, 4500, 80000, 12000]
     
    # 旧方法
    for i in number:
        if i > 8000:
            i += 200
        else:
            i += 500
    print(number)  #  [5500, 10200, 5000, 80200, 12200]
     
     
    # 新方法
    new_number = [i + 200 if i > 8000 else i + 500 for i in number]
    print(new_number)  #  [5500, 10200, 5000, 80200, 12200]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    元组推导式

    和列表的用法一样,和列表不一样的是需要使用(),而且返回的是生成器对象,操作的时候需要转换一下

        tup = (x for x in range(1, 10)) # 返回的是生成器对象
        # (1, 2, 3, 4, 5, 6, 7, 8, 9)
        print(tuple(tup))  # 将生成器对象转换成元组
    
    • 1
    • 2
    • 3

    集合推导式

    它们跟列表推导式也是类似的。 唯一的区别在于它们使用大括号{}

        squared = {x ** 2 for x in [1, 1, 2]}
        print(squared) # {1, 4}
    
    • 1
    • 2

    字典推导式

    字典推导和列表推导的使用方法是类似的。

        name = ['美琳', '梦洁', '雪丽', '美莲']
        age = [18, 19, 19, 18]
        a = {i: j for i, j in zip(name, age)}
        print(a) # {'美琳': 18, '梦洁': 19, '雪丽': 19, '美莲': 18}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    点赞 -收藏-关注-便于以后复习和收到最新内容
    有其他问题在评论区讨论-或者私信我-收到会在第一时间回复
    在本博客学习的技术不得以任何方式直接或者间接的从事违反中华人民共和国法律,内容仅供学习、交流与参考
    免责声明:本文部分素材来源于网络,版权归原创者所有,如存在文章/图片/音视频等使用不当的情况,请随时私信联系我、以迅速采取适当措施,避免给双方造成不必要的经济损失。
    感谢,配合,希望我的努力对你有帮助^_^
  • 相关阅读:
    java面向对象(四)
    PyTorch框架训练线性回归模型(CPU与GPU环境)
    Mybatis--动态SQL
    如何配置一台适合oc渲染器的电脑?
    云原生 | Kubernetes - 国内镜像部署Helm
    vue预览下载PDF文件
    SDEI初探-透过事务看本质
    Centos7安装Redis6.2.7-sentinel高可用步骤
    基于 MinIO 部署单实例 Databend | 新手篇(1)
    Xubuntu22.04之绘制正弦波(一百七十八)
  • 原文地址:https://blog.csdn.net/weixin_45203607/article/details/126686226