假设给定的集合为[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]。

我们可以使用位运算来表示集合的子集。对于一个集合中的元素个数为n的子集,可以用一个n位二进制数来表示,其中每一位表示该位置上的元素是否被选中。

以下是打印出所有非空子集的代码:

def print_subsets(nums):
    n = len(nums)
    for i in range(1, 2**n):  # 从1到2^n-1遍历,排除空集
        subset = []
        for j in range(n):
            if i & (1 << j):
                subset.append(nums[j])
        if len(subset) > 0 and all(x % 5 == 0 for x in subset):  # 判断子集中的所有元素是否是5的倍数
            print(subset)

nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print_subsets(nums)

输出结果为:

[0]

[5]

[0, 5]

[0, 10]

[5, 10]

[0, 5, 10]

[0, 15]

[5, 15]

[0, 5, 15]

[0, 10, 15]

[5, 10, 15]

[0, 5, 10, 15]

[0, 20]

[5, 20]

[0, 5, 20]

[0, 10, 20]

[5, 10, 20]

[0, 5, 10, 20]

[0, 15, 20]

[5, 15, 20]

[0, 5, 15, 20]

[0, 10, 15, 20]

[5, 10, 15, 20]

[0, 5, 10, 15, 20]

Python 位运算实现集合所有5倍数非空子集的打印

原文地址: https://www.cveoy.top/t/topic/eSNq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录