我有以下形式的列表:
l0=[[('x0', 2), ('x1', 3)], [('x2', 5), ('x3', 7), ('x4', 1)]]
如何将其变成:
l=[2,3,5,7,1]
我试过了:
l=[x[1] for x in l0]
这使:
#[('x1', 3), ('x3', 7)]
编辑:为了不丢失对元素的跟踪,无论如何也有输出为:
l=[[2,3],[5,7,1]]
所以不使用扁平化。
对于您的新问题,您可以使用嵌套理解。
lst0 = [[('x0', 2), ('x1', 3)], [('x2', 5), ('x3', 7), ('x4', 1)]]
lst = [[t[1] for t in u] for u in lst0]
print(lst)
输出
[[2, 3], [5, 7, 1]]
我改变,因为列表的名称l0
,并l
没有在大多数字体非常可读的:在l
是太相似了1
。
作为替代方案,您可以使用map
虽然 Guido 不喜欢这种结构:
from operator import itemgetter
lst0 = [[('x0', 2), ('x1', 3)], [('x2', 5), ('x3', 7), ('x4', 1)]]
print([list(map(itemgetter(1), u)) for u in lst0])
在 Python 2 中,您可以省略list
包装器:
print [map(itemgetter(1), u) for u in lst0]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句