Python推导式,以 一种固定的逻辑 初始化生成一个新的 列表、字典、集合。【exp for 子句】
以列表为例:
推导式生成普通列表:
lst = [x**2 for x in range(1,5)] #实际为: lst = [] for x in range(1,5): lst.append(x**2) print(lst)
推导式生成元组列表(当推导式中的字句包含多个子句的时候,可以看作是多个子句从左向右的依次内嵌):
lst2 = [(x,y) for x in range(5) if x % 2 for y in (1,2,3)] #实际为: lst2 = [] for x in range(5): if x % 2: for y in (1,2,3): lst2.append((x,y)) print(lst2)
同理:
推导式生成字典:
dict = {x:x**2 for x in range(5)}
同理:
推导式生成集合:
s = {x*2 for x in range(5)} #实际为: s = set() for x in range(5): s.add(x*2) print(s)
但是:集合推导式要注意:集合本身是自动去重的,所以实际生成的集合会推导式中所有枚举值去重后的结果!!!
例如:
s = {x+y for x in range(3) for y in range(5, 9)} #实际为: s = set() for x in range(3): for y in range(5,8): s.add(x+y)
print(s) #结果为:5,6,7,8,9