Python推导式用法

推导式comprehensions, 可以快速,简单的依据一个数据序列变换到一个新的数据序列

  • list

[表达式 for 变量 in 列表]    或者  [表达式 for 变量 in 列表 if 条件]

list1 = [0.2123, 0.1, 0.5, 0.6,0.5,0.8]

list2 = map(lambda x:1/x,list1)  //lambda 方式得到list1 元素的倒数


list3 = [1/x for x in list1]  // 推导式看起来更加简单

 

multiples = [i for i in range(30) if i % 3 is 0]
  • dict
test = {'testone': 10, 'testtwo': 34}
test_frequency = {v: k for k, v in test.items()}
  • set

它跟列表推导式也是类似的。 唯一的区别在于它使用大括号{}。

strings = ['a','is','with','if','file','exception']
print({len(s) for s in strings})  //相同长度的要一个
### 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 中的推导式提供了一种优雅且高效的方法来处理集合型数据结构。无论是列表还是字典,都可以通过这些工具简化代码逻辑,提升程序性能。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值