开启掘金成长之旅!这是我参与「掘金日新计划 · 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)
# 与上个列表效果一致
稍微复杂点的:
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)
# 迭代部分更换成字符串,以此类推
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))