从嵌套列表中获取元组列表

时间:2019-05-06 19:50:13

标签: python python-3.x

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

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')]

1 个答案:

答案 0 :(得分:0)

尝试使用此递归生成器:

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')]