列表解析

处理序列的操作和列表的方法中,Python还包括一些更高级的操作,称作为列表解析表达式,提供了一种处理象矩阵这样结构强大的工具.

例如,假设我们需要从列举的矩阵中取出第二列,就可以使用列表解析获取

M=[[1,2,3],
    [4,5,6],
    [7,8,9]]
    
col2 = [row[1] for row in M]
col2
>>>
    [2,5,8]

实际应用中,列表解析可以更加复杂,举例:

# 对第二列的每个元素加1
[row[1] + 1 for row in M]
>>>
    [3,6,9]
    
# 过滤奇数
[row[1] for row in M if row[1] % 2 == 0]
>>>
    [2,8]
    
# 矩阵对角线元素
diag = [M[i][i] for i in [0,1,2]]
>>>diag
    [1, 5, 9]

事实上,列表解析还可以应用在其他的可迭代对象上,而这样的解析语法也可以创建产生所需结构的生成器

g = (sum(row) for row in M)
>>>g
     at 0x00000239175C21A8>
>>> next(g)
    6
>>> next(g)
    15

而上述的事实同样可以使用内置函数map进行包装

list(map(sum,M))
>>>
    [6,15,24]

你可能感兴趣的:(列表解析)