python 推导式

本文介绍了Python中的三种推导式:列表推导式、字典推导式和集合推导式,详细讲解了每种推导式的使用方法,并探讨了元组是否具有推导式。同时提供了一些示例来帮助理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


推导式可以分为:

1. 列表推导式
2. 字典推导式
3. 集合推导式

1. 列表推导式

形式:[ ]

例子1:

lis = [ i**2 for i in range(10) ]
print(lis)
输出:
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

解析:
先执行 for i in range(10) 取每一个 i 的值,然后执行  i**2,把i**2运算后的值存入列表中

例子2:

lis = [i**2 for i in range(10) if i % 2 == 0]
print(lis)
输出:
[0, 4, 16, 36, 64]

解析:
先执行 for i in range(10) 取每一个 i 的值,然后进行判断语句 if i % 2 == 0,判断值为真,执行i**2,把i**2的值存入列表

例子3: 推导式中双(多)重循环

lis = [a+b for a in "123" for b in "cde"]
print(lis)
输出:
['1c', '1d', '1e', '2c', '2d', '2e', '3c', '3d', '3e']


2. 字典推导式

字典推导式与列表推导式大致相同,不同在于列表使用中括号 [ ],字典使用大括号{ }
例子:

dic = {i : i**2 for i in range(5)}
print(dic)
print(type(dic))
输出:
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
<class 'dict'>

3. 集合推导式

集合推导式与字典推导式十分相似,也是使用大括号 { }生成,但是其中形式有一定的差别。字典的形式是键值对,所以表现形式是 Key : Value,会多出一个 冒号 :。
例子:

Set = {i**2 for i in range(5)}
print(Set)
print(type(Set))

输出:
{0, 1, 4, 9, 16}
<class 'set'>


4. 元组是否也有推导式,()?

元组没有直接形式的推导式,使用 圆括号()是生成器的语法。
比如:

tup = (i for i in range(5))
print(tup)
print(type(tup))

输出:
<generator object <genexpr> at 0x000002B47C3F8570>
<class 'generator'>

当然如果要使用类似的方法生成元组推导式,需要调用元组类型转换函数 tuple( )。
比如:

tup = tuple((i for i in range(5)))
print(tup)
print(type(tup))

输出:
(0, 1, 2, 3, 4)
<class 'tuple'>

以上是推导式的基本使用。


思考题?

下面代码的运行结果:

代码1:
result = [lambda x: x+i for i in range(10)]
print(result[0](10))

结果是 ?
答案: 19


代码2:
result = [lambda x,y = i: x+y for i in range(10)]
print(result[0](10))

结果?
答案:10

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值