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

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

原文地址:https://www.cnblogs.com/leolsl/p/13062596.html