我知道这可能很简单,但是我很难做到这一点, 我正在尝试从已存在的元组列表中创建一个新的列表列表,例如:
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] ]
我希望这很清楚。
答案 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)
})
,A
,B
,C
转换为字符串,以提供示例输出。您可以按以下方式使用单个列表理解。
说明:您使用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)