求一个集合的所有子集 Python实现

本文介绍了一种使用Python生成所有可能的元素组合的方法。通过一个具体的函数PowerSetsBinary,可以针对任意数量的元素生成其所有可能的组合形式。文章包含了一个示例,展示了如何对三个元素进行操作并列出所有可能的组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Sat Jun 23 16:59:07 2018

@author: luogan
"""

def PowerSetsBinary(items):  
    #generate all combination of N items  
    N = len(items)  
    #enumerate the 2**N possible combinations  
    set_all=[]
    for i in range(2**N):

        #print('i=',i)

        #print('__'*10)
        combo = []  
        for j in range(N):  
            #print('j=',j)


            #test jth bit of integer i  
            if(i >> j ) % 2 == 1:  

                print('i=',i,'j=',j)



                combo.append(items[j]) 

                #print(combo)
        #yield combo  
        #print(combo)
        set_all.append(combo)
    return set_all

a=list(range(3))


out= PowerSetsBinary(a)

print(out
[[], [0], [1], [0, 1], [2], [0, 2], [1, 2], [0, 1, 2]]

转载于:https://www.cnblogs.com/luoganttcc/p/10525394.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值