• 6. python 列表生成式


    1.概述

    列表生成式是Python内置的非常简单却强大的可以用来创建list的生成式。

    列表生成式的结构是在一个中括号里包含一个表达式,然后是一个for语句,然后是0个或多个for或者if语句。列表表达式可以是任意的,意思是你可以在列表中放入任意类型的对象。在这个以if和for语句为上下文的表达式运行完成之后产生,返回结果将是一个新的列表。

    • 格式
    variable    =    [out_exp    for    out_exp    in    input_list    if    out_exp    ==    2]
    
    • 1

    2.例题

    • 例1

    #1.生成一个列表,列表元素分别为 [1 * 1, 2 * 2, 3 * 3……n * n],假设n = 10。

    #1.生成一个列表,列表元素分别为 [1*1,2*2,3*3……n*n],假设n = 10。
    # 一般写法
    list1 = []
    for i in range(1,11):
        list1.append(i * i)
    print(list1)
    
    #列表生成式
    list2 = [i * i for i in range(1,11)]
    print(list2)
    
    #输出
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 例2
      #2. 生成一个列表,列表元素分别为 [11,22,33……nn],假设n = 10。
    #2. 生成一个列表,列表元素分别为 [1*1,2*2,3*3……n*n],假设n = 10。
    #   要求返回的序列中不存在偶数项
    
    #列表生成式
    list2 = [i * i for i in range(1,11) if i % 2 != 0]
    print(list2)
    
    # 将上面的代码翻译一下,就和下面代码一个意思:
    list3 = []
    for i in range(1, 11):
        if i % 2 != 0:
            list3.append(i*i)
    print(list3)
    
    #输出
    [1, 9, 25, 49, 81]
    [1, 9, 25, 49, 81]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 例3
      #3. 字符串s1 =‘ABC’,字符串 s2 = ‘123’,要求:生成序列 A1 A2 A3 B1 B2 B3 C1 C2 C3
    #3. 字符串s1 ='ABC',字符串 s2 = '123',要求:生成序列 A1 A2 A3 B1 B2 B3 C1 C2 C3
    
    list1 = [i + j for i in 'ABC' for j in '123']
    print(list1)
    
    # 将上面的代码翻译一下,就和下面代码一个意思:
    list1 =[]
    
    for i in 'ABC':
        for j in '123':
            list1.append(i + j)
    print(list1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 例4

    将3x3的矩阵list转化成一个数组(列表),且使该数组中仅仅包含偶数:

    list =[
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
    ]

    '''
    将3x3的矩阵list转化成一个数组(列表),且使该数组中仅仅包含偶数:
    
    list =[
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
    '''
    list =[
        [1, 2, 3],
        [4, 5, 6],
        [7, 8, 9]
    ]
    
    print([itme2 for itme1 in list for itme2 in itme1 if itme2 %2 == 0])
    
    # 将上面的代码翻译一下,就和下面代码一个意思:
    list2 = []
    for itme1 in list:
        for itme2 in itme1:
            if itme2 % 2 == 0:
                list2.append(itme2)
    print(list2)
    #输出
    
    [2, 4, 6, 8]
    [2, 4, 6, 8]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    3.列表生成式与函数的结合

    users = [User(i, display_policy) for i in range(config.CLIENT_NUM)]
    
    • 1

    User(i, display_policy) 是一个函数

    根据自己的功能不同,函数位置 不同

  • 相关阅读:
    Terraform expressions 表达式
    企业网上订货系统的定义与组成|手机APP订单管理软件
    【博客508】vxlan 网络怎么感知彼此的存在并选择正确的路径传输报文
    uniapp 兼容pc与手机的样式方法
    ShareSDK Android端主流平台分享示例
    GP db模板、dblink、tablespace、交换分区和数据倾斜
    Java | Leetcode Java题解之第191题位1的个数
    Spring AOP(面向切面编程)是什么?
    同样Java后端开发三年,朋友已经涨薪到了30k,而我才刚到12K。必须承认多背背八股文确实有奇效!
    Python 用Ursina引擎制作一个3D迷宫游戏
  • 原文地址:https://blog.csdn.net/u014217137/article/details/127940490