首页 > 解决方案 > 从嵌套列表中获取元组列表

问题描述

如何从嵌套的元组列表中获取元组?这是我尝试过的:

from itertools import chain
l = [[[('key1', b'val1', b'val1.2'),[('key2', b'val2'),('key3', b'val3'),('key4', b'val4')]]]]
l2 = list(chain.from_iterable(l)) # tried
print(l2)

[[('key1', b'val1', b'val1.2'), [('key2', b'val2'), ('key3', b'val3'), ('key4', b'val4')]]]

需要这样的输出:

[('key1', b'val1', b'val1.2'),('key2', b'val2'),('key3', b'val3'),('key4', b'val4')]

标签: pythonpython-3.x

解决方案


试试这个递归生成器:

l = [[[('key1', b'val1', b'val1.2'),[('key2', b'val2'),('key3', b'val3'),('key4', b'val4')]]]]

def all_tuples(nested):
    for item in nested:
        if isinstance(item, list):
            yield from all_tuples(item)
        else:
            assert isinstance(item, tuple)
            yield item

print(list(all_tuples(l)))
# [('key1', b'val1', b'val1.2'), ('key2', b'val2'), ('key3', b'val3'), ('key4', b'val4')]

推荐阅读