Python编程每日一练

练习:编写一个函数 get_subsets,该函数接收一个列表 lst,返回该列表的所有子集(包括空集和自身)。

代码语言:python代码运行次数:0运行复制

def get_subsets(lst):
    # 获取列表长度
    n = len(lst)

    # 计算子集总数
    num_subsets = 2 ** n

    # 初始化存储所有子集的列表
    all_subsets = []

    # 遍历从0到num_subsets-1的所有整数
    for i in range(num_subsets):
        # 初始化当前子集
        subset = []

        # 遍历列表中的每个元素
        for j in range(n):
            # 检查第j个元素是否应该包含在当前子集中
            # 通过检查i的二进制表示中第j位是否为1来决定
            if (i >> j) & 1:
                subset.append(lst[j])

        # 将当前子集添加到all_subsets中
        all_subsets.append(subset)

    return all_subsets


# 测试代码
test_list = [1, 2, 3]
subsets = get_subsets(test_list)
print(subsets)  # 应输出 [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]

运行结果如下:

代码语言:txt复制
[[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]