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]]
发布评论