Python 从元组列表创建一个列表

Python 从元组列表创建一个列表,python,python-3.x,list,arraylist,append,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] ] 我希望这是清楚的。我已经将变量A,B,C,D转

我知道这可能很简单但我很难做到, 我所要做的就是从一个充满元组的列表列表中创建一个新的列表,例如:

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] ]

我希望这是清楚的。

我已经将变量
A
B
C
D
转换为字符串,以提供示例输出。您可以使用一个列表,如下所示

解释:使用
i
循环各个子列表。每个子列表有两个元组,您需要其中的最后一个元素
i[0][1]
给出第一个元组的最后一个元素,
i[0][1]
给出第二个元组的最后一个元素

输出

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

我已将变量
A
B
C
D
转换为字符串,以提供示例输出。您可以使用一个列表,如下所示

解释:使用
i
循环各个子列表。每个子列表有两个元组,您需要其中的最后一个元素
i[0][1]
给出第一个元组的最后一个元素,
i[0][1]
给出第二个元组的最后一个元素

输出

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

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

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

内部理解增加了处理任意长度的内部列表的灵活性。

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

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

内部理解增加了处理任意长度的内部列表的灵活性。

如果允许
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())

如果允许
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())

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

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)

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

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)

请包括您尝试过的内容以及尝试失败的原因/方式。请发布通过复制和粘贴工作且不会导致
名称错误的代码。请包括您尝试过的内容以及尝试失败的原因/方式。请发布通过复制和粘贴工作且不会导致
名称错误的代码。我应该说得更清楚但感谢我现在得到了它,你给我看的代码工作了,但它只占2个元组,它们每次都会变化,我应该说我做到了“为列表中的括号a:newlist.append([bracket[I][1]为范围内的I(len(bracket))”),这给了我想要的。但是你给我指出了正确的方向,所以谢谢你!很高兴能帮上忙:)我应该说得更清楚,但谢谢我现在明白了,你给我看的代码很有效,但它只占2个元组,每次它们都不一样,我应该说我做到了“为列表中的括号:newlist.append([bracket[I][1]为范围内的I(len(bracket))”,这给了我想要的。但是你给我指出了正确的方向,所以谢谢你!很乐意帮忙:)