python基础10——推导式

推导式

Python 推导式是一种独特的数据处理方式,可以从一个数据序列构建另一个新的数据序列的结构体。
  • 利:推导式的效率比循环的高

  • 弊:可读性差

Python 支持各种数据结构的推导式:
  • 列表推导式

  • 字典推导式

  • 集合推导式

  • 元组推导式

推导式格式为:

[表达式 for 变量 in 列表 if 条件]
{健:值 for 变量 in 字典.items() if 条件}
{表达式 for 变量 in 集合 if 条件}
(表达式 for 变量 in 元组 if 条件)
⽤⼀个表达式创建⼀个有规律的列表或控制⼀个有规律列表。

列表推导式

创建一个空列表,追加1到10这几个数字

  • for循环实现过程

list1 = []
for i in range(1,11):
    list1.append(i)
print(list1)
# 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  • 列表推导式实现过程

list1 = [i for i in range(1,11)]
print(list1)
# 输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

带if的列表推导式

方法一:利用步长实现
# 将1到10的偶数添加到列表
list1 = [i for i in range(1, 11, 2)]
print(list1)
# 输出:[1, 3, 5, 7, 9]
方法二:if实现
# 将1到10的偶数添加到列表
list1 = [i for i in range(1, 11) if i % 2 == 0]
print(list1)
# 输出:[1, 3, 5, 7, 9]

字典推导式

创建⼀个字典:字典key是1-5数字,value是这个数字的2次⽅

dict1 = {i: i**2 for i in range(1, 6)}
print(dict1)
# 输出:dict1 = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

将两个列表变为⼀个字典

list1 = ['name', 'age', 'sex']
list2 = ['Tom', 20, '男']
dict1 = {list1[i]: list2[i] for i in range(len(list1))}
print(dict1)
# 输出:{'name': 'Tom', 'age': 20, 'sex': '男'}

提取字典中⽬标数据

computs = {'AUC': 268, 'HP': 125, 'DELL': 201, 'Lenovo': 199, 'acer': 99}
# 需求:提取上述电脑数量⼤于等于200的字典数据

count1 = {key: value for key, value in computs.items() if value >= 200}
print(count1) 
# 输出:{'AUC': 268, 'DELL': 201}

集合推导式

计算数字 1,2,3 的平方数

setnew = {i**2 for i in (1,2,3)}
print(setnew)
# 输出:{1, 4, 9}

输出非abc的字母

a = {x for x in 'abracadabra' if x not in 'abc'}
print(a)
# 输出:{'d', 'r'}

元组推导式

生成包含1到9数字的元组

a = (x for x in range(1,10))
print(a)
# 返回的是生成器对象
# 输出:<generator object <genexpr> at 0x7faf6ee20a50> 

# 使用 tuple() 函数,可以直接将生成器对象转换成元组
print(tuple(a))       
# 输出:(1, 2, 3, 4, 5, 6, 7, 8, 9)

print(tuple((x for x in range(1,10))))
# 输出:(1, 2, 3, 4, 5, 6, 7, 8, 9)

全套python资料请前往主页: python全家桶_银色晨曦的博客-CSDN博客

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值