Python资源共享群:626017123
在 Python 中使用生成表达式,有以下三点好处:
1. 提高代码运行速度
2. 简化代码,使代码显得更精炼
3. (重点)是你的代码看上去像“高手”所做
举例来说,如果我们想生成一个0~9数字的平方的列表,一种做法可能是这样的:
1l = [] 2for i in range(10): 3 l.append(i**2)
而如果使用生成表达式的话就只需要一行代码:
In [24]: l = [i**2 for i in range(10)] In [25]: l Out[25]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
是不是很酷(装)炫(B)?
生成表达式也可以用来生成字典:
In [26]: {i:i**2 for i in range(10)} Out[26]: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
在生成表达式中还可以使用条件判断。比如,我们想生成0~9中偶数的平方的列表:
In [27]: [i**2 for i in range(10) if i % 2 == 0] Out[27]: [0, 4, 16, 36, 64]
还可以在生成表达式中使用两个变量:
In [28]: [i*j for i in range(3) for j in range(3)]Out[28]: [0, 0, 0, 0, 1, 2, 0, 2, 4]
下面我们来看个小案例,以下代码使用生成表达式来生成一副扑克牌。
1poker_color = ['黑桃','红桃','方块','梅花'] 2poker_num = [str(i) for i in range(2,11)] + ['J','Q','K','A'] 3pokers = [c + n for c in poker_color for n in poker_num] + ['大王','小王']