推导式创建序列
1、列表推导式
列表推导式生成列表对象,语法如下:
[表达式 for item in 可迭代对象 ]
或者 :[ 表达式 for item in 可迭代对象 if 条件判断]
a=[x*2 for x in range(5)]
print(a)
结果为:[0, 2, 4, 6, 8]
a=[x*2 for x in range(5) if x%2==0]#符合if条件的然后在乘以2
print(a)
结果为:[0, 4, 8]
2、字典推导式
字典的推导式生成字典对象格式如下:
{keyexpression : valueexpression for 表达式 in 可迭代对象}
类似于列表推导式,字典推导式也可以增加if条件判断,多个for循环
a="i love you ,i love hi"
b={ i :a.count(i) for i in a}
print(b)
结果为:
{‘i’: 3, ’ ': 5, ‘l’: 2, ‘o’: 3, ‘v’: 2, ‘e’: 2, ‘y’: 1, ‘u’: 1, ‘,’: 1, ‘h’: 1}
3、集合推导式
集合推导式生成集合,和列表推导式的语法类似:
{表达式 for item in 可迭代对象}
或者:{表达式 for item in 可迭代对象 if 条件判断}
a={ i for i in range(10) if i%2==0}
print(a)
结果为:{0, 2, 4, 6, 8}
4、生成器推导式(生成元组)
a=(i for i in range(20) if i%2==0)
print(a)
结果为:
<generator object at 0x00000256B69054C8>
一个生成器只能用一次,第一次迭代可以得到数据,第二次迭代发现数据已经没有了
a=(i for i in range(20) if i%2==0)
print(a)
print(list(a))
print(list(a))
结果为:
<generator object at 0x000002948EF354C8>
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
[]