016 Python语法之推导式

本文深入探讨了Python中推导式的特性和应用,包括列表、字典、集合及生成器推导式。通过实例展示了如何利用条件判断优化数据处理,为Python开发者提供了实用的编码技巧。

推导式

特性

  1. 好好应用推导式后面的条件判断

列表推导式

list1 = [i for i in range(10) if not(i%2) and i % 3]
list1 = [2, 4, 8]

字典推导式

dict1 = {i:i % 2==0 for i in range(10)}
dict1 = {0: True, 1: False, 2: True, 3: False, 4: True, 5: False, 6: True, 7: False, 8: True, 9: False}

集合推导式

set1 = {i for i in [1,1,2,2,3,4,5,6,7,8]}
set1 = {1,2,3,4,5,6,7,8}

生成器推导式

d = (i for i in range(100))
可以用next迭代
也可以用for迭代
for each in d:
    print(each)
Python 列表推导式是一种简洁且高效的创建列表的方式,它相当于 for 循环创建列表的简化版[^2]。其基本语法有以下几种形式: ### 基础用法 基础的列表推导式语法结构为 `[expression for item in iterable]`。这里的 `expression` 是对每个 `item` 进行的操作,`item` 是从 `iterable` 中取出的元素,`iterable` 则是可迭代对象,像列表、元组、字符串、范围(`range`)等都属于可迭代对象。 示例代码如下: ```python # 使用 for 循环创建列表 list_a = list() for a in range(5): list_a.append(a) print(list_a) # 使用列表推导式创建列表 list_b = [b for b in range(5)] print(list_b) ``` 在这个例子中,`for b in range(5)` 会依次从 `range(5)` 中取出元素,然后将这些元素直接作为新列表的元素,所以最终 `list_b` 就是 `[0, 1, 2, 3, 4]`。 ### 设置条件表达式用法 列表推导式还可以添加条件表达式,语法结构为 `[expression for item in iterable if condition]`。这里的 `condition` 是一个布尔表达式,只有当 `condition` 为 `True` 时,`expression` 才会被执行并添加到新列表中。 示例代码如下: ```python # 原始列表 original_list = [1, 2, 3, 4, 5] # 使用列表推导式推导出新列表 new_list = [x * 2 + 1 for x in original_list if x > 3] # 打印新列表 print(new_list) ``` 在这个例子中,只有当 `x > 3` 时,`x * 2 + 1` 才会被计算并添加到新列表中。所以对于 `original_list` 中的元素,只有 `4` 和 `5` 满足条件,计算后得到 `[9, 11]`。 ### 嵌套条件表达式用法 列表推导式中也可以使用嵌套的条件表达式,语法结构为 `[expression if condition1 else expression2 for item in iterable]`。 示例代码如下: ```python a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] b = [i + 100 if i > 5 else 0 for i in a] print('b : ', b) ``` 在这个例子中,对于 `a` 列表中的每个元素 `i`,如果 `i > 5`,则将 `i + 100` 添加到新列表中;否则,将 `0` 添加到新列表中。 ### 嵌套循环用法 列表推导式还可以使用嵌套循环,语法结构为 `[expression for outer_item in outer_iterable for inner_item in inner_iterable]`。 示例代码如下: ```python matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flattened = [element for row in matrix for element in row] print(flattened) ``` 在这个例子中,首先 `for row in matrix` 会依次取出 `matrix` 中的每一行,然后 `for element in row` 会依次取出每一行中的元素,最终将这些元素组成一个新的一维列表。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豆豆orz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值