从元组列表创建列表

时间:2018-10-10 20:07:08

标签: python python-3.x list arraylist append

我知道这可能很简单,但是我很难做到这一点, 我正在尝试从已存在的元组列表中创建一个新的列表列表,例如:

listA = [ [(1,2,A), (1,3,B)], [(1,1,B),(1,2,D)], [(1,1,C),(1,3,F], [(1,3,D),(1,5,F)] ]

我想创建一个新列表,该列表由原始列表中[2]元素(字母)的列表组成。

所以我的新列表如下:

newList = [ [A,B] , [B,D], [C,F], [D,F] ]

我希望这很清楚。

4 个答案:

答案 0 :(得分:3)

您可以使用以下嵌套理解:

[[y[2] for y in x] for x in listA]
# [['A', 'B'], ['B', 'D'], ['C', 'F'], ['D', 'F']]

内部理解具有更大的灵活性,可以处理任何长度的内部列表。

答案 1 :(得分:0)

我已经将变量myArr = [".png",".jpeg",".pdf",".json",".jsx"]; myArr = myArr.map(item => { return item.substring(1) }) ABC转换为字符串,以提供示例输出。您可以按以下方式使用单个列表理解。

说明:您使用D遍历各个子列表。每个子列表都有两个元组,您需要其中的最后一个元素。 i为您提供 first 元组的最后一个元素,i[0][-1]为您提供 second 元组的最后一个元素,

i[0][-1]

输出

listA = [ [(1,2,'A'), (1,3,'B')], [(1,1,'B'),(1,2,'D')], [(1,1,'C'),(1,3,'F')], [(1,3,'D'),(1,5,'F')] ]
listB = [[i[0][-1], i[1][-1]] for i in listA]

答案 2 :(得分:0)

如果允许numpy,则可以执行以下操作:

import numpy as np

listA = [[(1, 2, 'A'), (1, 3, 'B')], [(1, 1, 'B'), (1, 2, 'D')], [(1, 1, 'C'), (1, 3, 'F')], [(1, 3, 'D'), (1, 5, 'F')]]
print(np.array(listA)[:, :, 2].tolist())

输出

[['A', 'B'], ['B', 'D'], ['C', 'F'], ['D', 'F']]

您也可以选择:

print(np.array(listA)[..., 2].tolist())

答案 3 :(得分:0)

您可以将压缩表达式与list或列表理解一起使用

print(list([j[-1] for j in i] for i in lista))
print([[j[-1] for j in i] for i in lista])

详细说明:

new = []
for i in lista:
    x = []
    for j in i:
        x.append(j[-1])
    new.append(x)