现在我们有一个装有名字的列表["tom", "jack", "bob", "nash"]

我们想要将列表中的名字首字母都大写。按照之前学的知识,我们会用遍历列表的方式

对列表中的每个名字进行首字母大写的更改:

python列表元素大写 python列表首字母大写_首字母


运行结果如下:

python列表元素大写 python列表首字母大写_条件判断_02


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

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

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

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

python列表元素大写 python列表首字母大写_python列表元素大写_03


运行结果如下:

python列表元素大写 python列表首字母大写_条件判断_04


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

了。


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

还是上面那个列表,我们获得列表中名字大于等于4个字母的名字

python列表元素大写 python列表首字母大写_python列表元素大写_05


我们在列表推导式的最后加上了一个判断语句 if len(name) > =4 ,即遍历出的名字大于或等于4个字母的,

放到name变量中组成一个新的列表。

运行结果如下:

python列表元素大写 python列表首字母大写_python列表元素大写_06


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

 

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

python列表元素大写 python列表首字母大写_python列表元素大写_07


如上图,salarys列表中有3个字典,每个字典包含了一个人的名字和薪水

通过判断薪水是否大于10000,若大于则增加2%的薪水,若小于等于则增加5%的薪水

那么通过列表推导式,遍历每个一个人(emploee),然后判断emploee["salary"]是否大于10000,

条件为真则*(1+0.02),若为假则*(1+0.05)

运行结果如下图:

python列表元素大写 python列表首字母大写_首字母_08


我们获得了一个新的列表,算出了每个人调整工资后的工资数

带else的列表推导式格式:

[ 表达式a   if 条件判断 f else 表达式 b  for 变量 in 列表]

若条件表达式if为真,则执行表达式a, 反之则执行条件表达式b


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