python推导式

python中的推导式

摘抄的地址
一/ 列表推导式:用[]

格式: [生成表达式 for 元素 in 可迭代对象],可以加上条件判断语句

In [1]: [i**2 for i in range(5)]
Out[1]: [0, 1, 4, 9, 16]

In [2]: [i for i in range(5) if i%2==0]
Out[2]: [0, 2, 4]

In [3]: [i**3 if i%2==0 else i*i for i in range(5)]
Out[3]: [0, 1, 8, 9, 64]

  • 生成器:用()

multiples = (i for i in range(30) if i % 3 is 0)

In [4]: (i for i in range(30) if i % 3 is 0)
Out[4]: <generator object <genexpr> at 0x0405B270>

二/ 字典推导式
例如:交换k和v

In [5]: dic = {'a': 10, 'b': 34}
In [6]: {v: k for k, v in dic.items()}
Out[6]: {10: 'a', 34: 'b'}
### Python 推导式的使用方法与示例 #### 列表推导式 (List Comprehension) 列表推导式是一种简洁的方式来创建新列表。它可以基于现有的可迭代对象(如列表、元组或其他序列),并可以加入条件过滤。 以下是几个常见的例子: - **生成平方数列表** 下面的例子展示了如何通过 `range` 函数生成一个包含 1 到 10 的平方的列表[^2]。 ```python squares = [x**2 for x in range(1, 11)] print(squares) # 输出: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] ``` - **筛选特定条件的数据** 这里展示了一个从原始列表中筛选出大于 5 的数值,并存入一个新的列表中的过程。 ```python original_list = [1, 3, 5, 7, 9, 2, 4, 6, 8, 10] filtered_list = [x for x in original_list if x > 5] print(filtered_list) # 输出: [7, 9, 6, 8, 10] ``` - **字符串操作** 可以利用列表推导式对字符串进行批量处理,比如将所有单词转换为大写形式。 ```python words = ["hello", "world", "python"] capitalized_words = [word.upper() for word in words] print(capitalized_words) # 输出: ['HELLO', 'WORLD', 'PYTHON'] ``` --- #### 字典推导式 (Dictionary Comprehension) 字典推导式类似于列表推导式,但它用于构建字典而不是列表。其基本格式如下: `{key_expression: value_expression for item in iterable}`[^4]。 以下是一些具体的实例: - **反转键值对** 假设有一个字典,可以通过字典推导式轻松实现键和值的互换[^3]。 ```python dict_example = {"a": 1, "b": 2, "c": 3} reversed_dict = {value: key for key, value in dict_example.items()} print(reversed_dict) # 输出: {1: 'a', 2: 'b', 3: 'c'} ``` - **动态计算值** 如果需要根据某些逻辑动态设置字典的值,也可以借助字典推导式完成。 ```python numbers = [1, 2, 3, 4, 5] squared_dict = {num: num**2 for num in numbers} print(squared_dict) # 输出: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} ``` --- #### 生成器表达式 (Generator Expression) 虽然看起来像列表推导式,但生成器表达式并不会立即创建整个数据集,而是按需生成元素,因此更加节省内存资源。它的语法几乎完全相同于列表推导式,只是需要用圆括号代替方括号。 - **简单生成器表达式** 下面是一个简单的生成器表达式示例,它会逐项返回平方值而不会一次性占用大量内存。 ```python gen_expr = (x**2 for x in range(1, 6)) for val in gen_expr: print(val) # 依次输出: 1, 4, 9, 16, 25 ``` - **求和运算** 结合内置函数 `sum()`,可以直接对生成器表达式的结果进行累加。 ```python total_sum = sum(x**2 for x in range(1, 6)) print(total_sum) # 输出: 55 ``` --- ### 总结 Python 中的推导式提供了一种优雅且高效的方法来处理集合型数据结构。无论是列表还是字典,都可以通过这些工具简化代码逻辑,提升程序性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值