1.推导式的优点
让烦杂的代码变得简单易看,也减少我们写的代码量。
我们来举个例子,建立一个0到10立方的列表:
当不使用推导式的话写出来是这样的:
list = []
for i in range(11):
list.append(i*i*i)
print(list)
输出结果:
[0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
如果你用推导式写的话就是这样
[i*i*i for i in range(11)]
输出结果:
[0, 1, 8, 27, 64, 125, 216, 343, 512, 729, 1000]
2.推导式的语法
[变量 for 变量 in 条件 if 条件判断]
3.列表推导式
例子1:输出一个100以内3的倍数的列表
[result for i in range(100) if i%3==0]
输出结果:
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, 90, 93, 96, 99]
例子2:输出一个10以内的偶数的平方的列表
[i*i for i in range(10) if i%2==0]
输出内容:
[0, 4, 16, 36, 64]
例子3:建立一个名字的列表,然后把名字长度大于6的名字提取出来,把首字母大写后弄成一个新的列表
list = ['liyuanfang','yuange','zhugeliang','yao']
[name.title() for name in list if len(name)>6]
输出结果:
[‘Liyuanfang’, ‘Zhugeliang’]
4.字典推导式
例子1:建立一个名字的列表,然后把名字长度大于6的名字提取出来,用名字作为字典的key,名字的长度做为字典的value,建立一个新的字典
list = ['liyuanfang','yuange','zhugeliang','yao']
{name:len(name) for name in list if len(name)>6}
输出内容:
{‘liyuanfang’: 10, ‘zhugeliang’: 10}
例子2:建立一个名字的列表,建立一个身高的列表,把它们组合成一个新的字典
list_1 = ['liyuanfang','yuange','zhugeliang','yao']
list_2 = [160,175,180,155]
{name:high for name,high in zip(list_1,list_2)}
输出内容:
{‘liyuanfang’: 160, ‘yuange’: 175, ‘zhugeliang’: 180, ‘yao’: 155}
5.集合推导式
跟字典的使用差不多
例子1、输出一个10以内的偶数的平方的集合
{i*i for i in range(10) if i%2==0}
输出内容是:
{0, 64, 4, 36, 16}
因为是set,所以返回的值顺序在不通机器上可以不一致欧~