目录
1、列表t推导式
[item for item in data if condition]
list = [i * i for i in range(10) if i % 2 == 0]
print(list)
list = [str(a)+ b for a in range(10) for b in 'abc' if a % 2 == 0]
print(list)
dict = {'k1':'v1','k2':'v2'}
list =[k + ";" + v for k ,v in dict.items()]
print(list)
运行结果:
[0, 4, 16, 36, 64]
['0a', '0b', '0c', '2a', '2b', '2c', '4a', '4b', '4c', '6a', '6b', '6c', '8a', '8b', '8c']
['k1;v1', 'k2;v2']
2、if...else方式
[exp1 if condition else exp2 for x in data]
data = [1, 2, 3, 4, 5, 6, 7, 8, 9]
test = [data[i] + 2 if (i + 1) % 2 == 0 else data[i] for i in range(len(data))]
print(test)
运行结果:
[1, 4, 3, 6, 5, 8, 7, 10, 9]
3、字典推导式 key:value
dict = {i:i * i for i in range(10) if i % 2 == 0}
print(dict)
运行结果如下:
{0: 0, 2: 4, 4: 16, 6: 36, 8: 64}
4、集合推导式
t = {i for i in 'abcdefgwsxabds' if i not in 'abc'}
print(t)
运行结果如下:
{'w', 's', 'f', 'g', 'd', 'x', 'e'}
5、思考:
[]是列表推导式、{key:value}是字典推导式,{value}是集合推导式,那()是不是元组推导式呢?
上图答案很明显,他是一个生成器,那么我们能不能转换成元组呢,可以新增一个()即可