• python 列表推导式


    现在我们有一个装有名字的列表["tom", "jack", "bob", "nash"]
    我们想要将列表中的名字首字母都大写。按照之前学的知识,我们会用遍历列表的方式
    对列表中的每个名字进行首字母大写的更改:

    运行结果如下:

    我们可以看到,我们获得了一个新的列表,列表中的每个名字首字母都大写。

    那么,我们有没有更为简洁的方式实现这个功能呢?当然有,那就是列表推导式:
    格式:

    [表达式 for 变量  in 旧列表] or [表达式 for 变量  in  旧列表 if 条件 ]

    我们用列表推导式来实现上面的功能:

    运行结果如下:

    我们可以看到,这样的方式也获得了一个新的列表,列表中的每个名字首字母大写
    了。

    扩展1:列表推导式还可以加上条件判断语句if
    还是上面那个列表,我们获得列表中名字大于等于4个字母的名字

    我们在列表推导式的最后加上了一个判断语句 if len(name) > =4 ,即遍历出的名字大于或等于4个字母的,
    放到name变量中组成一个新的列表。
    运行结果如下:

    我们可以看到,新列表中名字长度大于等于4个

    扩展2:列表推导式还可以加上条件判断语句if...else...

    如上图,salarys列表中有3个字典,每个字典包含了一个人的名字和薪水
    通过判断薪水是否大于10000,若大于则增加2%的薪水,若小于等于则增加5%的薪水
    那么通过列表推导式,遍历每个一个人(emploee),然后判断emploee["salary"]是否大于10000,
    条件为真则*(1+0.02),若为假则*(1+0.05)
    运行结果如下图:

    我们获得了一个新的列表,算出了每个人调整工资后的工资数
    带else的列表推导式格式:
    [ 表达式a   if 条件判断 f else 表达式 b  for 变量 in 列表]
    若条件表达式if为真,则执行表达式a, 反之则执行条件表达式b

    注意:列表推导式会得到一个新的列表,不会改变原来的列表

  • 相关阅读:
    任务调度~Quartz.net实现简单的任务调试
    编译器错误~写JS还是谨慎点好
    编译器错误~不能向ObjectStateManager添加相同的键
    EF架构~将数据库注释添加导入到模型实体类中
    c++ pair类型
    Adobe dreamweaver 5.5安装过程
    c++函数作为参数传递
    c++ vector.clear()
    动态规划之装配线调度问题
    转:VS后缀名详解
  • 原文地址:https://www.cnblogs.com/leolsl/p/13062596.html
Copyright © 2020-2023  润新知