猿问

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

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

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

我希望这很清楚。


温温酱
浏览 238回答 3
3回答

杨__羊羊

我已将您的变量A, B, C,转换D为字符串以提供示例输出。您可以使用单个列表理解,如下所示。说明:您使用i. 每个子列表都有两个元组,您需要其中的最后一个元素。i[0][-1]给你的最后一个元素第一个元组,并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]产出[['A', 'B'], ['B', 'D'], ['C', 'F'], ['D', 'F']]

UYOU

您可以使用以下嵌套理解:[[y[2] for y in x] for x in listA]# [['A', 'B'], ['B', 'D'], ['C', 'F'], ['D', 'F']]内部理解具有额外的灵活性,可以处理任何长度的内部列表。

长风秋雁

如果numpy允许,您可以执行以下操作:import numpy as nplistA = [[(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())
随时随地看视频慕课网APP

相关分类

Python
我要回答