现在我们有一个装有名字的列表["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
注意:列表推导式会得到一个新的列表,不会改变原来的列表