我知道有很多关于如何展平二维列表的帖子,但这个有点不同,因为它是二维和三维列表的混合:

items = [[255, 204, 204], ..., [255, 179, 179], [[250, 250, 250], ..., [220, 220, 220]]]

我希望这个列表只是二维的:
items = [[255, 204, 204], ..., [255, 179, 179], [250, 250, 250], ..., [220, 220, 220]]

我尝试使用列表理解,但它没有正确地展平列表:
flat_list = [item for items in l for item in items]

将混合维数组展平为二维数组的最佳方法是什么?

最佳答案

您可以使用递归函数:

def flatten(items):
    for item in items:
        if isinstance(item[0], list):
            yield from flatten(item)
        else:
            yield item

演示:
>>> items = [[255, 204, 204], [255, 179, 179], [['250, 250, 250'], ['220, 220, 220']]]
>>> list(flatten(items))
[[255, 204, 204], [255, 179, 179], ['250, 250, 250'], ['220, 220, 220']]

关于python - 如何将混合维数组展平为二维列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45882359/

10-12 16:02