列表推导式:
[expr for iter_var in iterable]
1首先迭代iterable里所有内容,每一次迭代,都把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
比如我们要生成一个包含1到10的列表
[x for x in range(1,11)]
Range(1,11)
[expr for iter_var in iterable if cond_expr]
2加入了判断语句,只有满足条件的内容才把iterable里相应内容放到iter_var中,再在表达式中应用该iter_var的内容,最后用表达式的计算值生成一个列表。
要生成包含1到10的所有奇数列表。
range(1,11,2)
[x for x in range(1,11) if x % 2 == 1]
列表推导式的写法 ,我一般习惯从右至左写,这样比较符合人的思维方式。
>>> x*x for x in range(10)-----------语法错误,因为列表推导式必须要加【】
SyntaxError: invalid syntax
>>> [x*x for x in range(10)]---------数字
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> ["the %s"% s for s in range(10)]-----------字符
['the 0', 'the 1', 'the 2', 'the 3', 'the 4', 'the 5', 'the 6', 'the 7', 'the 8', 'the 9']
>>> [(x,y) for x in range(2) for y in range(3)]-------------元组
[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2)]
>>> [(x,y) for x in range(2) for y in range(3,5)]
[(0, 3), (0, 4), (1, 3), (1, 4)]
>>> dict([(x,y) for x in range(2) for y in range(3,5)])------字典,为什么只有两组,因为同key的值被覆盖了
{0: 4, 1: 4}
阅读(556) | 评论(0) | 转发(0) |