2016-11-24 68 views
1

我的元组的列表清单:如何从元组的名单列表获取列表在python

[[(1,0.99), (2,0.95)], [(2,0.97),(3,0.89),(1, 0.80)]] 

从上面的数据我怎么能得到清单列表,如:

[[1,2],[2,3,1]] 
+1

首先你可以解释一下什么是理想的结果应该是,二来可以显示你的努力 – EdChum

回答

4

您可以简单地使用嵌套列表理解

lst = [[(1,0.99), (2,0.95)], [(2,0.97),(3,0.89),(1, 0.80)]] 

r = [[i for i, _ in l] for l in lst] 
print(r) 
# [[1, 2], [2, 3, 1]] 
+0

感谢的解决方案和参考。 – ssh26

1

你可以做到这一点W¯¯从itertools模块里第i个GROUPBY:

import itertools 

L = [[(1,0.99), (2,0.95)], [(2,0.97),(3,0.89),(1, 0.80)]] 

print [[x[0] for x in k] for k, g in itertools.groupby(L)] 
2

使用少许差异嵌套列表理解相似,从@Moses Koledoye答案

lst = [[(1,0.99), (2,0.95)], [(2,0.97),(3,0.89),(1, 0.80)]] 
result = [[i[0] for i in j] for j in lst] 
# result = [[1, 2], [2, 3, 1]] 
0

另一种选择是使用一个功能更强大的方法。使用operator.itemgetter构造一个可调用对象,该对象从集合中获取初始项目,并使用map将其应用于主列表的每一行。

from operator import itemgetter 

lst = [[(1,0.99), (2,0.95)], [(2,0.97),(3,0.89),(1, 0.80)]] 

ig0 = itemgetter(0) 
print([list(map(ig0, row)) for row in lst]) 

输出

[[1, 2], [2, 3, 1]] 
相关问题