zoukankan      html  css  js  c++  java
  • python基础-列表推导式

    先说点废话:

    最开始我是通过一本书来入门python的:《Head First Python》

    记得当时学完for循环后,书里介绍了一种简化代码的方法,它可以通过一行代码从一个列表中取出数据然后追加到另一个列表中,没错,就是列表推导式

    不过当时学完后,一直没想起来用,工作中遇到一些需要遍历取数的情况,直接用for循环了,一个不够,就直接上俩~~
    最近在写脚本的时候,因为又一直在用for循环,代码看起来有点冗杂,所以突然想起来是不是可以用列表推导来代替

    OK,废话完毕,下面开始进入正题,了解一下列表推导到底是个什么鬼?

    1、创建一个列表,然后使用for循环将该列表中的数据添加到另一个列表中

    heroes = ["亚瑟", "妲己", "橘右京", "阿轲", "王昭君", "马化腾"]  # 原始列表
    
    # 创建一个新列表hero_name,分别将heroes中的值追加到其中
    
    # 1、使用for循环+append方法实现
    hero_name = []
    for hero in heroes:
        hero_name.append(hero)
    print(hero_name)

    2、使用列表推导来将数据添加到一个新列表中

    # 2、使用列表推导,将heroes中的数据取出来放到一个新列表中
    hero_name = [hero for hero in heroes]
    print(hero_name)

    打印结果如下

     3、在列表推导式中加上if语句

    # 结合if语句,例如取出来名称长度大于2的值
    hero_name = [hero for hero in heroes if len(hero) > 2]
    print(hero_name)

    打印结果如下

     4、看一个复杂的例子,2个for循环如何转换成列表推导式

    nums = [[1, 3, 5, 7], [2, 4, 6, 8]]
    
    # 使上述nums中的每个数字都取出来,放到一个新列表中,用到2个for循环
    new_nums = []
    for nums_a in nums:
        # print(nums_a)
        for i in nums_a:
            new_nums.append(i)
    print("new_nums的值为:{}".format(new_nums))
    
    # 列表推导式
    new_num = [i for nums_a in nums for i in nums_a]
    # 从左至右,分别是外层循环到内层循环;先把里面的2个小列表遍历一遍,然后再遍历每个小列表的数字;
    # 最后的表示结果的变量,写在最左侧
    
    print("new_num的值为:{}".format(new_num))
    
    # 加一个判断条件,如果大于6,就取出来
    new_num_1 = [i for nums_a in nums for i in nums_a if i > 6]
    print("new_num_1的值为:{}".format(new_num_1))
    
    # 定义一个函数,求平方
    def square(x):
        return x * x
    
    new_num_2 = [square(i) for nums_a in nums for i in nums_a]  # 把结果传到一个函数中
    print("new_num_2的值为:{}".format(new_num_2))

    打印结果如下

    原书中的小tips

     

  • 相关阅读:
    有一个实体类,只想返还一部分字段给前端
    Dozer-对象属性映射工具类
    java冒泡排序
    总结Java中的reference类型与四种引用类型
    关于jar包的两种导包方式
    Java Web项目的创建——IDEA+Maven+Tomcat
    关于maven的配置过程
    MYSQL数据库的增删改以及查
    关于linux系统下,出现ERROR 1366 (HY000): Incorrect string value: 'xE6xB4xBBxE5x8AxA8...' for column 'deptN的问题解决方法
    Java Script
  • 原文地址:https://www.cnblogs.com/hanmk/p/12003451.html
Copyright © 2011-2022 走看看