Python第十天推导式

53 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

推导式

目标

  • 列表推导式
  • 字典推导式
  • 集合推导式

推导式作用

用于表达创建一个有规律的列表,或者控制一个有规律的列表,简单来说,就是缩减代码,代码变少但是功能上不变

列表推导式

while for 推导式对比

while

#这里设置空列表
a=[]
#再设置一个遍历参数
i=0
#循环条件是i小于10
while i < 10:
    #执行代码是在a列表中添加一个来自i等于的值
      a.append(i)
        #每次循环i在上一次基础加1
      i+=1
        
print(a)

输出

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

for

#设置一个空列表
a=[]
#设置一个for循环,循环范围是从09
for i in range(10):
    #设置追加,每循环一次将i或者的数据追加到a列表中
    a.append(i)
    #每循环一次加1
    i +=1
    
print(a)

输出

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

推导式

#第一个i是返回值,生成的值返回此处,后面的代码就是设置一个for循环,循环范围是从09,默认每次加1
a=[i for i in range(10)]
print(a)

if列表推导式

a=[i for i in range(10) if i % 2 == 0]
print(a)

输出

[0, 2, 4, 6, 8]

多个for循环实现列表推导式

a=[]
​
for i in range(1,3):
    for j in range(3):
        a.append((i,j))
        
print(a)

输出

[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

推导式

a=[(i,j) for i in range(1,3) for j in range(3)]
print(a)

输出

[(1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

字典推导式

a={i: i for i in range(1,20,2)}
print(a)

{1: 1, 3: 3, 5: 5, 7: 7, 9: 9, 11: 11, 13: 13, 15: 15, 17: 17, 19: 19}

a={i: i**2 for i in range(1,20,2)}
print(a)

{1: 1, 3: 9, 5: 25, 7: 49, 9: 81, 11: 121, 13: 169, 15: 225, 17: 289, 19: 361}

列表合并为字典

a=['name','age','password']
b=['佬6','20','666666']c={a[i]:b[i]  for i in range(len(a))}
#如果两个列表数据个数相同,len统计任何一个列表的长度都可以
#如果两个列表数据个数不相同,len统计数据列表的数据个数会报错,lent统计数据少的列表会报错

输出

{'name': '佬6', 'age': '20', 'password': '666666'}

集合推导式

a=[1,2,3]
b={i ** 2 for i in a}
print(a)

[1, 2, 3]

总结

列表推导式

[xx for xx in range()]

字典推导式

{xx1: xx2 for in}

集合推导式

{xx for xx in}

\