使用itertools的Python中的Powerset

发布于 2021-01-29 19:34:06

我正在尝试在Python 3中创建电源集。我找到了对该itertools
模块的引用,并且使用了该页面上提供的电源集代码。问题:代码返回对itertools.chain对象的引用,而我想访问Powerset中的元素。我的问题:如何实现?

在此先感谢您的见解。

关注者
0
被浏览
76
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    itertools函数返回 迭代器
    ,即按需延迟生成结果的对象。

    您可以通过循环遍历对象,也可以for通过调用对象将结果转换为列表list()

    from itertools import chain, combinations
    
    def powerset(iterable):
        "powerset([1,2,3]) --> () (1,) (2,) (3,) (1,2) (1,3) (2,3) (1,2,3)"
        s = list(iterable)
        return chain.from_iterable(combinations(s, r) for r in range(len(s)+1))
    
    for result in powerset([1, 2, 3]):
        print(result)
    
    results = list(powerset([1, 2, 3]))
    print(results)
    

    您也可以将对象存储在变量中,并使用该next()函数从迭代器中逐个获取结果。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看