欢迎关注公众号:数据科学中文社区
列表解析式是python中的一个亮点语法。本质上就是用列表来构建列表,通过对已有列表中的每一项应用一个指定的表达式来构建出一个新的列表。列表解析式的优势是编码简单,运行起来很快。
列表解析式的三个核心要素是:
1.作用于输入序列的运算表达式;
2.对输入序列的循环表达式;
3.对输入序列的过滤条件,其中过滤条件是可选的。
比如我们想要用列表a生成列表b,其中列表b中的每个元素都是a中对应元素的二次方
a = [1,2,3,4,5,6,7,8,9,10]
b = [x**2 for x in a]
print(b)
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
这个例子中,输入序列是a,运算表达式是x**2,循环表达式是for x in a。这个例子没有使用过滤条件,因此就使用了列表a中的所有元素来构造列表b,如果我们只想用列表a中所有能被3整除的元素来构造列表b呢,那就得用上过滤条件了。
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = [x**2 for x in a if x % 3 == 0]
print(b)
[9, 36, 81]
同样,对于字典也有同样的用法。
字典解析式,可以用字典以及列表等这些可以迭代的数据类型,来构造一个新的字典。
先看用字典构造字典
D1 = {'a': 1, 'b': 2, 'c': 3}
D2 = {k: v*2 for (k, v) in D1.items()}
print(D2)
{'b': 4, 'a': 2, 'c': 6}
再举一个用列表构造字典的例子:
D = {c:c*4 for c in ['a', 'b', 'c', 'd']}
print(D)
{'d': 'dddd', 'a': 'aaaa', 'c': 'cccc', 'b': 'bbbb'}
关于数据科学更系统、更深入的探讨可进入我们的专栏《Python数据科学之路》:酱油哥:来吧,一起踏上Python数据科学之路zhuanlan.zhihu.com
本专栏模仿美剧剧集编排分为五季,第一季:Python编程语言核心基础、第二季:Python数据分析基本工具、第三季:Python语言描述的数学基础、第四季:机器学习典型算法专题、第五季:实战热点深度应用。
有任何问题也可以咨询微信号:zhangyumeng0422