python学习笔记013——推导式
2017-12-24 00:10
627 查看
1 推导式简介
推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。
推导式有三种形式:
1)列表推导式 (list)
2)字典推导式 (dict)
3)集合推导式 (set)
2 列表推导式
是用可迭代对象生成列表的一种方法列表推导式是表达式
2.1 基本的列表推导式
语法:[表达式 for 变量 in 可迭代对象] [表达式 for 变量 in 可迭代对象 if 真值表达式]
示例1:[1,2,3,4,5,6.......,10]
[x for x in range(1, 11)]
或
L = [] for x in range(1, 10001): L.append(x)
示例2:[1, 4, 9, 16, 25, ...]
[x**2 for x in range(1, 11)]
示例3:[1 3 5 7 .... 99]
[x for x in range(1, 100) if x % 2 == 1]
示例4:生成1000以内的所有素数的列表
def is_prime(x): """ 判断x是否为素数(或质数) 如果为素数,返回True """ if x <= 1: return False for i in range(2, x): if x % i == 0: return False return True L = [x for x in range(1, 10000) if is_prime(x)] print(L)
示例5:
s1 = "ABC"
s2 = "123"
如何生成以下列表
L = ['A1', 'A2', 'A3', 'B1', 'B2'...]
L = [] for x in s1: for y in s2: L.append(x + y)
如何生成以下列表
L = ['A1', 'B2', 'C3']
s1 = 'ABC' s2 = '123' a = [] for i in range(len(s1)): a.append(s1[i]+s2[i]) print(a)
2.2 嵌套的列表推导式
语法:[表达式 for 变量1 in 可迭代对象1 if 条件表达式1 for 变量2 in 可迭代对象2 if 条件表达式2 ]
示例1:
s1 = "ABC"
s2 = "123"
如何生成以下列表
L = ['A1', 'A2', 'A3', 'B1', 'B2'...]
s1 = "ABC" s2 = "123" L = [x + y for x in s1 for y in s2]
3 字典推导式
语法:{ 键表达式 : 值表达式 for 变量 in 可迭代对象 if 真值表达式 [for 变量 in 可迭代....]}
字典中的用法与列表中的用法类似,将 [ ] 换成 { } 即可
示例1:
生成表达式:{1:"1的平方", 4:"2的平方", 9:'3的平方', ..100:'10的平方'}
d = {x**2 : str(x)+'的平方' for x in range(1, 11)}
示例2:快速更换key和value
mcase = {'a': 1, 'b': 2} mcase_frequency = {v: k for k, v in mcase.items()} print(mcase_frequency) # output {10: 'a', 34: 'b'}
示例3:将字典中大小写a b 键所对应的值合并
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3} mcase_frequency = { k.lower(): mcase.get(k.lower(), 0) + mcase.get(k.upper(), 0) for k in mcase.keys() if k.lower() in ['a','b'] } print(mcase_frequency) # Output: {'a': 17, 'b': 34}
备注: D.get(key, default) 返回键 key 所对应的值,如果没有此键,则返回 default(默认 None)
参考 python的各种推导式(列表推导式、字典推导式、集合推导式)
4 集合推导式
语法:集合推导式语法: { 表达式 for 变量 in 可迭代对象 if 真值表达式 [for 变量 in 可迭代....]}
集合中的用法与列表中的用法类似,将 [ ] 换成 { } 即可
示例1:
squared = {x**2 for x in [1, 1, 2]} print(squared) # Output: {1, 4}
注意:集合中具有特有的性质,其元素不能重复
示例2:
生成集合:{1, 8, 27, 4**4... n**n}
s = {x ** x for x in range(1, 10)}
另外还有更为广泛的应用:python的推导式(实用) python-列表推倒式-轻量级循环
相关文章推荐
- python学习笔记013——模块
- 【零基础入门学习Python笔记013】元祖:戴上了枷锁的列表
- Python学习笔记5_列表推导式与序列解包
- Python学习笔记:列表推导式List Comprehension
- python学习笔记--推导式(Comprehension)
- python学习笔记013——包package
- python学习笔记013——内置函数dir()
- 【ZZ】Python 学习笔记 02 – List 推导式
- 【Python学习笔记】-Python中三目表达式与推导式
- Python学习笔记(基础篇)_013_pickle模块
- Python学习笔记013_正则表达式
- 【零基础入门学习Python笔记013】元祖:戴上了枷锁的列表
- python学习笔记013——模块中的私有属性
- Python语言学习笔记之闭包
- python 学习笔记-列表
- python网络编程学习笔记(四):域名系统
- 【Python】python 学习笔记 --画图(networkx)
- 流畅的python学习笔记:第五章
- python学习笔记八--动态类型
- 【小白笔记】python web学习之路-Flask(1)