2016-11-24 67 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]] 
相關問題