python推导

推导式分为列表推导式(list),字典推导式(dict),集合推导式(set)三种

1.列表推导式也叫列表解析式。
功能:是提供一种方便的列表创建方法,所以,列表解析式返回的是一个列表
格式:用中括号括起来,中间用for语句,后面跟if语句用作判读,满足条件的传到for语句前面用作构建先的列表

例:

li=[i*2 for i in range(10) if i % 2 == 0]
print li
很明显,列表解析式最擅长的方式就是对整个列表分别做相同的操作,并且返回得到一个新的列表,并不会直接返回,需要赋值给变量

2.第二种是字典解析式,这个跟列表解析式的用法是差不多的,只不中括号该改成大括号,毕竟字典本身用的就是大括号。

mca={"a":1, "b":2, "c":3, "d":4}
dicts={v:k for k,v in mca.items()}
print dicts
3.还有一种是集合推导式。
功能:集合推导式跟列表推导式差不多,都是对一个列表的元素全部执行相同的操作,
但集合是一种无重复无序的序列
区别:跟列表推到式的区别在于:1.不使用中括号,使用大括号;2.结果中无重复;3.结果是一个set()集合,集合里面是一个序列

squared={i*2 for i in [1,1,2]}
print squared

### Python 推导表达式的使用方法 Python 推导式是一种简洁的语法,用于快速生成列表、字典或集合等数据结构[^1]。它不仅提高了代码的可读性,还提升了运行效率。以下是关于不同类型的推导式及其使用的详细介绍。 #### 列表推导式 列表推导式是最常见的形式之一,其基本语法如下: ```python new_list = [expression for item in iterable if condition] ``` 其中 `item` 是迭代对象中的每一个元素,`iterable` 可以是任何支持迭代的对象(如列表、元组、字符串等),而 `condition` 是一个布尔表达式,用来过滤符合条件的数据项[^4]。 ##### 示例 1:简单的列表推导式 假设有一个字符串列表 `data`,我们希望提取出长度大于等于3的所有字符串并转换为大写: ```python >>> data = ['abc', 'def', 'I use python', 'hong201'] >>> result = [s.upper() for s in data if len(s) >= 3] >>> print(result) ['ABC', 'DEF', 'I USE PYTHON', 'HONG201'] ``` 这里 `[s.upper() for s in data if len(s) >= 3]` 就是一个典型的列表推导式[^3]。 --- #### 字典推导式 字典推导式允许动态构建键值对映射关系。它的基本语法类似于列表推导式,只是需要用花括号 `{}` 来包裹整个表达式。 ##### 示例 2:基于索引创建字典 如果想根据某个列表的内容自动生成对应的字典,可以这样实现: ```python >>> keys = ['a', 'b', 'c'] >>> values = [1, 2, 3] >>> dictionary = {k: v for k, v in zip(keys, values)} >>> print(dictionary) {'a': 1, 'b': 2, 'c': 3} ``` 此例子展示了如何利用 `zip()` 函数配合字典推导式完成操作。 --- #### 集合推导式 集合推导式与列表推导式非常相似,区别在于它是用一对花括号 `{}` 表达的,并且最终的结果会自动去重。 ##### 示例 3:去除重复字符 对于一段文字,我们可以轻松移除其中所有的重复字母: ```python >>> text = "hello world" >>> unique_chars = {char.lower() for char in text if char.isalpha()} >>> print(unique_chars) {'d', 'e', 'h', 'l', 'o', 'r', 'w'} ``` 这段代码通过集合推导式实现了只保留唯一的英文字母。 --- #### 结合逻辑表达式优化复杂场景 当面对较为复杂的业务需求时,可以通过嵌套多个条件或者引入赋值表达式进一步增强功能[^5]。例如,在处理大量数据筛选过程中,可能需要用到中间变量存储临时计算结果。 ##### 示例 4:带有赋值表达式的推导式 下面的例子演示了如何在一个列表推导式内部定义局部变量以便复用某些昂贵的操作: ```python >>> numbers = [1, 2, 3, 4, 5] >>> squares_and_cubes = [(square := n ** 2, cube := square * n) for n in numbers] >>> print(squares_and_cubes) [(1, 1), (4, 8), (9, 27), (16, 64), (25, 125)] ``` 在这里 `(square := n ** 2)` 和 `(cube := square * n)` 展现了海象运算符的应用价值。 --- ### 总结 以上介绍了几种主要的推导式类型及其典型应用场景。合理运用这些技巧可以帮助开发者写出更加优雅高效的代码。值得注意的是,尽管推导式强大,但在实际开发中也应权衡其清晰度,避免过度堆砌而导致难以维护的情况发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值