2018-11-19
阅读量:
734
列表解析式是个啥
有时可能会想把一个列表转换为另一个列表,例如只保留其中一些元素,或更改其中
一些元素,或者同时做这两种变动。可以执行这种操作的 Python 技巧叫作列表解析(list
comprehension) :
even_numbers = [x for x in range(5) if x % 2 == 0] # [0, 2, 4]
squares = [x * x for x in range(5)] # [0, 1, 4, 9, 16]
even_squares = [x * x for x in even_numbers] # [0, 4, 16]
类似地,你也可以把列表转换为字典或集合:
square_dict = { x : x * x for x in range(5) } # { 0:0, 1:1, 2:4, 3:9, 4:16}
square_set = { x * x for x in [1, -1] } # { 1 }
如果你不需要来自原列表中的值,常规的方式是使用下划线作为变量:
zeroes = [0 for _ in even_numbers] # 和even_numbers有相同的长度
列表解析可以包括多个 for 语句:
pairs = [(x, y)
for x in range(10)
for y in range(10)] # 100个对(0,0) (0,1) ... (9,8), (9,9)
其中后面的 for 语句可以使用前面的 for 语句的结果:
increasing_pairs = [(x, y) # 只考虑x < y的对
for x in range(10) # range(lo, hi) 与之相等
for y in range(x + 1, 10)] # [lo, lo + 1, ..., hi - 1]






评论(0)


暂无数据
推荐帖子
0条评论
0条评论
0条评论