Skip to main content
 首页 » 编程设计

python之如何生成二进制幂集

2025年05月04日1398°冷暖

N = 3 

期望的输出:

[(0,0,0), (0,0,1), (0,1,0), (0,1,1), (1,0,0), (1,0,1), (1,1,0), (1,1,1)] 

这需要适用于任何 N,最好至少达到 20。

我已经使用过 bin() 函数,但我不太确定如何完成其​​余的操作。

请您参考如下方法:

您需要的是[0, 1] 的“N 次笛卡尔幂”。这是通过 itertools.product 实现的:

In [1]: from itertools import product 
 
In [2]: N = 3 
 
In [3]: list(product([0, 1], repeat=N)) 
Out[3]:  
[(0, 0, 0), 
 (0, 0, 1), 
 (0, 1, 0), 
 (0, 1, 1), 
 (1, 0, 0), 
 (1, 0, 1), 
 (1, 1, 0), 
 (1, 1, 1)] 

至于效率,这里有一个简单的时间比较(我修改了你的函数返回一个列表,因为我在 Python 3 上测试):

In [9]: %timeit x = prod(3) 
100000 loops, best of 3: 3.96 µs per loop 
 
In [10]: %timeit x = S(3) 
100000 loops, best of 3: 18.2 µs per loop