列表解析

处理序列的操作和列表的方法中,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
    <generator object <genexpr> at 0x00000239175C21A8>
>>> next(g)
    6
>>> next(g)
    15

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

list(map(sum,M))
>>>
    [6,15,24]
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容