[转]Python 的列表解析式,集合解析式,字典解析式
Python 的列表解析式,集合解析式,字典解析式 这三种都是 python 里面的语法糖。 语法糖,Syntactic Sugar,就是为了写程序时候少出错,发明的一些简便的方法,但不影响这个语法的功能。 (我第一反应是 HP 里面的 chocolate frog,哈哈哈) 1. 列表解析式 list comprehension 通常我们定义有内容 list 时,想对内容进行一些计算再放进去,除了使用 for 循环迭代出列表内的元素,进行计算再放进去,还可以在列表内直接写解析式计算。 1.1 普通版:[expression for i in iterable] 比如,要求 1-10 的每个数字的算术平方根组成的集合。 用 for 循环的话: lst = [] for i in range(1, 11): i = i ** 0.5 #不用pow()是因为这样计算比较快 lst.append(i) 这样看起来就比较繁琐。 用列表解析式的话,就相当于把上面的内容都浓缩起来: lst = [ i**0.5 for i in range(1,11) ] 这样看起来就很清爽,前面是要对 i 做的处理,后面是 i 从哪里迭代,这些都用中括号 [ ] 括起来,是生成一个列表。 1.2 进阶版 [expression for i in iterable if… for j in iterable if… …] 前面还是表达式,但是后面写的是双循环,还有判断条件,就是符合条件的再进前面的表达式。
…