我的元组的列表清单:如何从元组的名单列表获取列表在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