Я пытаюсь получить все подмножество из уникального списка. Я смог решить проблему, используя пустые списки с длиной, равной исходному списку. но когда я захотел использовать пустой список без None в качестве заполнителя, рекурсия начала действовать по-другому.
- Решение с пустым списком с заполнителем Нет
def all_subsets(input_list):
subset_list =[]
subset = [None]*len(input_list)
helper(input_list, subset, 0)
return subset_list
def helper(input_list, subset, i):
#condition
if i == len(input_list):
print(subset)
else:
# First Case
subset[i] = None
helper(input_list, subset, i+1)
# Second Branch
subset[i] = input_list[i]
helper(input_list, subset, i+1)
all_subsets(input_list)
[None, None, None]
[None, None, 3]
[None, 2, None]
[None, 2, 3]
[1, None, None]
[1, None, 3]
[1, 2, None]
[1, 2, 3]
- Ошибка при использовании полностью пустого списка для добавления элементов для создания подмножества
def all_subsets_2(input_list):
subsets_list =[]
subset_list =[]
helper_2(input_list, subsets_list, subset_list, 0)
return subsets_list
def helper_2(input_list, subsets_list, subset_list, i):
#condition
if i == len(input_list):
subsets_list.append(subset_list)
else:
# First Case
helper_2(input_list, subsets_list, subset_list, i+1)
# Second Branch
subset_list.append(input_list[i])
helper_2(input_list, subsets_list, subset_list, i+1)
print(all_subsets_2(input_list))
[[3, 2, 3, 1, 3, 2, 3], [3, 2, 3, 1, 3, 2, 3], [3, 2, 3, 1, 3, 2, 3], [3, 2, 3, 1, 3, 2, 3], [3, 2, 3, 1, 3, 2, 3], [3, 2, 3, 1, 3, 2, 3], [3, 2, 3, 1, 3, 2, 3], [3, 2, 3, 1, 3, 2, 3]]