我的元組的列表清單:如何從元組的名單列表獲取列表在python
[[(1,0.99), (2,0.95)], [(2,0.97),(3,0.89),(1, 0.80)]]
從上面的數據我怎麼能得到清單列表,如:
[[1,2],[2,3,1]]
我的元組的列表清單:如何從元組的名單列表獲取列表在python
[[(1,0.99), (2,0.95)], [(2,0.97),(3,0.89),(1, 0.80)]]
從上面的數據我怎麼能得到清單列表,如:
[[1,2],[2,3,1]]
您可以簡單地使用嵌套列表理解:
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]]
感謝的解決方案和參考。 – ssh26
你可以做到這一點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)]
使用少許差異嵌套列表理解相似,從@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]]
另一種選擇是使用一個功能更強大的方法。使用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]]
首先你可以解釋一下什麼是理想的結果應該是,二來可以顯示你的努力 – EdChum