Python推导式

目录

1.列表推导式

2.元组推导式

3.字典推导式

4.集合推导式


Python中的推导式是一种简洁、高效的构造列表、集合、字典和生成器表达式的方法。它允许你在一行代码中以简洁的方式表达循环和条件逻辑。推导式通常比传统的循环代码更加简洁和易读。

它通常分为以下几种:列表推导式,元组推导式,字典推导式,集合推导式。

1.列表推导式

列表推导式的组成分为三部分:第一部分是表达式语句,第二部分是for循环,第三部分是筛选条件(可有可无,根据情况选择是否写条件)。

import random
# 列表推导式
l1 = [random.randint(0, 10) * i for i in range(10) if i == 1 or i == 5]
print(l1)       # [1, 10]

# 可以使用str将i转换为字符串格式
options = [str(i) for i in range(5)]
print(options)      # ['0', '1', '2', '3', '4']

对于列表l1,如果没有if后的条件,是将i取0-9时前方表达式的值都放入列表,而加上if的限制后,则变成当i的值取1和5时才将随机到的数放入l1中。

对于options列表则是将0-4都放入option列表,并将其通过str转换为字符串,这是因为我们在写一些简单的系统的时候,用户输入的数字实际为字符串类型,使用这样的推导式可以有效避免因未对用户输入进行int转化而导致的报错。

2.元组推导式

元组推导式的组成分为三部分,第一部分是表达式语句,第二部分是for循环,第三部分是筛选条件(可有可无,根据情况选择是否写条件),与列表相同。

# Iterable(迭代器)  Generator(生成器:是特殊的迭代器)
# 元组推导式: 得到一个生成器, 可以通过遍历获取生成器内容
g0 = (i ** 2 for i in range(10) if i % 2)
print(g0)       # <generator object <genexpr> at 0x00000185533AFED0>
for e in g0:
    print(e)    # 1, 9, 25, 49, 81

元组推导式的返回结果不是具体的元组,而是一个生成器,但是我们可以通过遍历来获取到生成器内的元素。

3.字典推导式

字典推导式的组成分为三部分:第一部分是关于键和值的表达式,第二部分是for循环,第三部分是筛选条件(可有可无,根据情况选择是否写条件)。

# 字典推导式
# 第一部分是关于键和值格式的表达式
# 第二部分是循环
# 第三部分是条件
d0 = {f"key{i}": i ** 2 for i in range(10) if i % 2 == 0}
print(d0)     # {'key0': 0, 'key2': 4, 'key4': 16, 'key6': 36, 'key8': 64}

4.集合推导式

集合推导式的组成分为三部分:第一部分是元素,第二部分是for循环,第三部分是筛选条件(可有可无,根据情况选择是否写条件)。

# 集合推导式
# 第一部分是元素
# 第二部分是循环
# 第三部分是条件
s0 = {i for i in range(10) if i % 3 == 0}
print(s0)     # {0, 9, 3, 6}

总之,使用推导式可以显著提高 Python 代码的质量、可读性和性能。在编写 Python 代码时,应该优先考虑使用推导式来简化代码逻辑和降低复杂性。

Python推导式是一种简洁的语法糖,可以从一个数据序列构建另一个新的数据序列。常见的推导式包括列表推导式、字典推导式和集合推导式。列表推导式可以通过对一个列表进行迭代和筛选操作,生成一个新的列表。字典推导式可以通过对一个字典进行迭代操作,生成一个新的字典。而集合推导式则可以通过对一个集合进行迭代和筛选操作,生成一个新的集合。推导式在数据处理场景中非常常见,并可以大大简化代码的编写和阅读。如果你想了解更多关于推导式的语法和用法,请参考引用和引用中提供的链接。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python推导式简单示例【列表推导式、字典推导式与集合推导式】](https://download.csdn.net/download/weixin_38708361/12865890)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python推导式](https://blog.csdn.net/iprobobo/article/details/123582135)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值