我有以下列表:
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个字符串中。
答案 0 :(得分:3)
您可以使用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')]
请注意,分组器配方zip(*[iterator]*3)
调用迭代器,因此列表理解被generator expression替换。