我有以下表格的清单:
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]]
所以不要使用扁平化。
答案 0 :(得分:2)
您可以为您的理解添加额外的循环:
l0=[[('x0', 2), ('x1', 3)], [('x2', 5), ('x3', 7), ('x4', 1)]]
l=[x[1] for i in l0 for x in i]
print(l)
# [2, 3, 5, 7, 1]
答案 1 :(得分: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]
答案 2 :(得分:0)
您可以遍历列表并将其附加到新列表中。
l0=[[('x0', 2), ('x1', 3)], [('x2', 5), ('x3', 7), ('x4', 1)]]
out = []
for a in l0:
out.append([x[0] for x in a])
print(out)
答案 3 :(得分:-1)
你首先必须像这样压扁列表
flat_list = [item for sublist in l0 for item in sublist]
然后做你的事
l=[x[1] for x in flat_list]
答案 4 :(得分:-2)
尝试使用索引,你的l0是一个列表:https://www.tutorialspoint.com/python/python_lists.htm
l0=[[('x0', 2), ('x1', 3)], [('x2', 5), ('x3', 7), ('x4', 1)]]
l=(l0[0][0][1],l0[0][1][1],l0[1][0][1],l0[1][1][1],l0[1][2][1])
print(l)
(2,3,5,7,1)