Python基础学习第十四天,推导式

72 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第14天,点击查看活动详情

python推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。

学会推导式也有助于我们提高编程的效率。主要的就是那四种数据类型:列表元组字典集合

1.列表推导式

格式:
    1.[变量名 for 变量名 in 可迭代对象]
    2.[变量名 for 变量名 in 可迭代对象 if 条件]

先来点简单的:

lis_1 = [i for i in range(10)]
print(lis_1)
# 输出一个范围0-9的列表(普通的循环推导式)
lis_2 = [i for i in range(10) if i%2!=0]
print(lis_2)
# 输出范围在0-9内的奇数列表(带上条件的推导式)

lis_3 = [i+1 for i in range(10)]
print(lis_3)
# 输出范围1-10的列表(对变量本身进行操作)
lis_4 = [i for i in range(1,11)]
print(lis_4)
# 与上个列表效果一致

image.png

稍微复杂点的:

lis_5 = [i+j for j in range(5)for i in range(5)]
print(lis_5)
# 使用两个循环嵌套
lis_6 = [i+j for j in range(5)for i in range(5) if i==4]
print(lis_5)
# 双循环的基础上加上判断

lis_7 = [i for i in 'python']
print(lis_7)
# 迭代部分更换成字符串,以此类推

image.png

2.元组推导式

格式:
    1.tuple(变量名 for 变量名 in 可迭代对象)
    2.tuple(变量名 for 变量名 in 可迭代对象 if 条件)

生成内容不赘述,主要有个易错点

tup_1 = tuple(i for i in range(5))
print(tup_1)
# 正常生成
tup_2 = (i for i in range(5))
print(tup_2)
# 生成迭代器对象

3.字典推导式

格式:
    1.{键:值 for 值 in 可迭代对象}
    2.{键:值 for 值 in 可迭代对象 if 条件}

照旧不赘述,大致演示:

dic_1 = {i : i**2 for i in range(5)}
print(dic_1)
lis = ["python","java","go","c","c++"]
dic_2 = {lis[i] : len(lis[i]) for i in range(len(lis))}
print(dic_2)

ps :一定要注意一个循环,多加循环是嵌套不要搞混。

4.集合推导式

格式:
    1.{变量 for 变量 in 可迭代对象}
    2.{变量 for 变量 in 可迭代对象 if 条件}

与别的类型类似:

set_1 = {i for i in range(10)}
print(set_1)
print(type(set_1))

image.png