获取lis列表的单个元素列表

2024-10-01 15:37:13 发布

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

Possible Duplicate:
Flatten (an irregular) list of lists in Python

我有一个类似python的列表

l=[1,2,[3,4,5],[[4,2,4],[4,7,8]]]

我想用一个集合来获得所有唯一的值,但是这失败了

^{pr2}$

有人帮忙吗?要用列表列表等THX来设置列表


Tags: ofinan列表listslistduplicateflatten
2条回答

在将嵌套结构放入集合之前,需要“展开”或展平嵌套结构。您可以使用生成器来保持大列表的效率:

def flatten(lst):
    for element in lst:
        if isinstance(element, list):
            for subelement in flatten(element):
                yield subelement
        else:
            yield element

然后使用列表中的生成器l创建一个集合:

^{pr2}$

在你第一次使用这个方法之前,你要如何运用这个方法。在

import collections

def flat_list(tlist):
   if isinstance(tlist, collections.Iterable):
      return [j for i in tlist for j in flat_list(i)]
   else:
      return [tlist]

然后:

^{pr2}$

给出:

set([1, 2, 3, 4, 5, 7, 8])

与基于list comprehension的方法相比,使用生成器的@MartijnPieters方法处理非常大的列表将更有效。在

相关问题 更多 >

    热门问题