【问题标题】:Create Matrix from List within List从列表中的列表创建矩阵
【发布时间】:2014-04-13 23:46:22
【问题描述】:

我有以下清单:

sortedList = [['2', 'f'],['5', 'B'],['8', '6'],['32','@'],['43', 'G'],['76', '.'],['173', 'v'],['200', '.'],['265', 'y']]

我正在尝试从此列表中创建一个 3x3 矩阵,以便输出如下:

matrix = [['f','B','6'],['@','G','.'],['v','.','y']]

基本上,我需要找到一个函数,将每个列表的最后一个字符串放入长度为 3 个字符串的列表中。

【问题讨论】:

    标签: python arrays list matrix


    【解决方案1】:

    您可以使用list comprehension 来收集每个项目中的最后一个字符串:

    In [67]: [item[-1] for item in sortedList]
    Out[67]: ['f', 'B', '6', '@', 'G', '.', 'v', '.', 'y']
    

    然后,要以 3 人一组的方式收集这些物品,请使用grouper recipe

    In [68]: zip(*[(item[-1] for item in sortedList)]*3)
    Out[68]: [('f', 'B', '6'), ('@', 'G', '.'), ('v', '.', 'y')]
    

    请注意,grouper 配方 zip(*[iterator]*3) 需要一个迭代器,因此列表推导被替换为 generator expression

    【讨论】:

    • 哇,相乘数组中的生成器,不错。但可能还不清楚它是如何工作的。
    • 我试图写一个关于石斑鱼食谱如何工作的解释here,但我担心它不是很好。
    • 完美运行。需要让用户选择最后乘以什么,所以我用命令行参数替换了“3”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-27
    • 2020-02-05
    • 1970-01-01
    • 2016-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多