将列表列表展平为一列[Python]

2024-04-19 02:03:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样的数据:

[[var, list], [x1, [x,y,z]], [x2, [a,b,c]]]

我想把它变成这样:

[[var, list], [x1, x],[x1,y],[x1,z], [x2, a],[x2,b],[x2,c]]

但我不知道怎么做。你知道吗


Tags: 数据varlistx1x2
2条回答

让我们从我对你的首发名单的解释开始:

>>> z = [['var', ['list']], ['x1', ['x','y','z']], ['x2', ['a','b','c']]]

要重新排列它,可能需要:

>>> [ [[x, y] for y in lst] for x, lst in z]
[[['var', 'list']], [['x1', 'x'], ['x1', 'y'], ['x1', 'z']], [['x2', 'a'], ['x2', 'b'], ['x2', 'c']]]

或者,进一步重新安排:

>>> a = []
>>> for x in [ [[x, y] for y in lst] for x, lst in z]:
...     a += x
... 
>>> a
[['var', 'list'], ['x1', 'x'], ['x1', 'y'], ['x1', 'z'], ['x2', 'a'], ['x2', 'b'], ['x2', 'c']]

这不是一个最佳的解决方案,但是它使用非常基本的python命令,这样您就可以跟踪正在发生的事情。你知道吗

data = [['var', 'list'], ['x1', ['x','y','z']], ['x2', ['a','b','c']]]
final = []
for pair in data:
    if pair == ['var', 'list'] :
        final.append(pair)
    else:
        for entry in pair[1]:
            final.append([pair[0], entry])
print(final)

相关问题 更多 >