推导式的运用

一,何为推导式

推导式(comprehension)也称为推导式表达式(comprehension expression)或者推导式语法(comprehension syntax),是一种简洁的语法结构,用于快速创建集合(列表、集合、字典等)。

推导式允许开发者使用一种简洁的方式通过对一个可迭代对象中的元素进行加工处理,来创建一个新的集合。在推导式中,可以使用特定的语法将迭代的过程写在一行中,而不需要使用传统的循环语句。

二,推导式的具体用法

推导式在哪里面被用到?

1.列表中的推导式
  1. 列表推导式(List Comprehension):用于快速生成新的列表对象。 列表推导式的一般语法为:[expression for item in iterable if condition] 其中,expression 表示生成新列表中每个元素的表达式,item 是可迭代对象中的每个元素,iterable 是可迭代对象,condition 是一个可选的条件表达式,用于过滤元素。
# 第一部分是表达式
# 第二部分是for语句,用来取range里的所有值
# 第三部分  条件(可选)只有满足条件  才能将表达结果放入列表
# 并把值全部放入列表


# 列表推导式
# 把0-9赋予给i,然后放入列表
l0 = [i for i in range(10)]
print(l0)

# 返回 10次100,并放入列表
l1 = [100 * i for i in range(10)]
print(l1)

# i是奇数才去i 去把100*i 打印 几次
l2 = [100 * i for i in range(10) if i % 2 == 1]
print(l2)
返回结果为:
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 100, 200, 300, 400, 500, 600, 700, 800, 900]
[100, 300, 500, 700, 900]

 

2.元组中的推导式

 元组推导式是一种快速创建元组的方法,类似于列表推导式。它使用一种类似于循环的语法来生成元组的元素,并将它们组合成一个元组。

# 元组推导式
# 元组推导式,结果不是个元组了,是个generator 生成器
# generator 生成器 iterable 迭代器
g0 = (i for i in range(10) if i % 2)
# 第一/二/三部分的格式与列表的一样
print(g0, type(g0))
# 但是可以遍历
for i in g0:
    print(i)
<generator object <genexpr> at 0x0000021C794CFED0> <class 'generator'>
1
3
5
7
9
3.字典中的推导式

字典推导式(Dictionary Comprehension):用于快速生成新的字典对象。 字典推导式的一般语法为:{key_expression: value_expression for item in iterable if condition} 其中,key_expression 表示生成新字典中每个键的表达式,value_expression 表示生成新字典中每个值的表达式,item 是可迭代对象中的每个元素,iterable 是可迭代对象,condition 是一个可选的条件表达式,用于过滤元素。

# 字典推导式
# 结果类型还是一个字典
# 第一部分是关于 键和值格式的表达式
# 第二部分是for 第三部分是条件

d0 = {f'键名{i}': i ** 2 for i in range(10) if i % 2 == 1}
print(d0, type(d0))
返回结果:
{'键名1': 1, '键名3': 9, '键名5': 25, '键名7': 49, '键名9': 81} <class 'dict'>
4.集合推导式

集合推导式是一种快速创建集合的方法,类似于列表推导式和元组推导式。它使用一种类似于循环的语法来生成集合的元素,并将它们组合成一个集合。

集合推导式的语法如下:

set = {expression for item in iterable}

其中,expression是要生成的集合元素的表达式,item是可迭代对象中的每个元素。

例如,我们可以使用集合推导式创建一个包含1到10的平方的集合:

squares = {x**2 for x in range(1, 11)}
print(squares)

输出结果为:

{64, 1, 4, 36, 100, 9, 16, 49, 81, 25}

集合推导式可以快速生成不重复的元素集合,类似于数学中的集合概念。注意,集合是无序的,每个元素只能出现一次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值