Python - 列表、字典、集合推导式

发布时间 2024-01-05 00:19:09作者: 虎头小黑

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