Python学习笔记(十三) 推导式

Python学习笔记(十三)

一、推导式

在Python中,只有列表、字典、集合有推导式。推导式可以用来化简代码。

1.列表推导式(列表生成式)

作用:用一个表达式创建一个有规律的列表或者控制一个有规律的列表。

需求:创建一个0-10的列表。

# 需求:创建0 1 2 ...9的列表,以下介绍三种方法:

# while循环实现--------
list1 = []
i = 0
while i < 10:
    list1.append(i)
    i += 1
print(list1)

# for循环实现-------
list2 = []
for i in range(10):
    list2.append(i)
print(list2)

# 列表推导式实现-------
list3 = []
list3 = [i for i in range(10)]
print(list3)

在这里插入图片描述由上面三种方法看出来,列表推导式的代码量最少。

1.2 带if的列表推导式

需求:创建0-10的偶数列表

# 1. 简单的列表推导式 用range步长控制
list1 = [i for i in range(0,10,2)]
print(list1)

# 2. for循环加if 创建有规律的列表
list2 = []
for i in range(10):
    if i % 2 == 0:
        list2.append(i)
print(list2)

# 3. 把for循环配合if的代码 改写 带if的列表推导式
list3 = [i for i in range(10) if i % 2 == 0]
print(list3)

在这里插入图片描述

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

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

需求:创建列表如下:

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

代码如下:

# for循环嵌套
list1 = []
for i in range(1,3):
    for j in range(0,3):
        list1.append((i,j))
print(list1)

#列表推导式
list2 = [(i,j) for i in range(1,3) for j in range(0,3)]
print(list2)

在这里插入图片描述

1.字典推导式

在这里插入图片描述
例1:需求:字典key是1-5数字,value是这个数字的2次方。

# 例1:需求:字典key是1-5数字,value是这个数字的2次方。
dict1 = {i:i**2 for i in range(1,5,1)}
print(dict1)

结果截图:
在这里插入图片描述
例2:需求:快速合并两个列表为字典。

# 例2:需求:快速合并两个列表为字典。
# 情况一:两个列表单词个数相同
list1 = ['name','age','gender']
list2 = ['Tom',19,'男']

dict1 = {list1[i]:list2[i] for i in range(len(list1))}
print(dict1)

# 情况二:如果两个列表数据个数不同,len()统计数据多的的列表数据个数会报错。
list3 = ['name','age','gender','ID']
list4 = ['Tom',19,'男']

dict2 = {list3[i]:list4[i]  for i in range(len(list4))}
print(dict2)

在这里插入图片描述
例3:需求:提取字典中指定的目标数据。

# 例3:需求:提取字典中指定的目标数据。
counts = {'MBP':268,'HP':125,'DELL':201,'lenovo':199,'acer':99}
# 需求:提取电脑台数大于等于200的
dict3 = {key:value for key,value in counts.items() if value >= 200}
print(dict3)

在这里插入图片描述

3.集合推导式

需求:创建一个集合,数据为下方列表的2次方。

list1 = [1,1,2]

代码如下:

list1 = [1,1,2]
set1 = {i**2 for i in list1 }
print(set1)  #{1,4} *注意集合有去重功能
4.总结

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值