Я новичок в python и, практикуя язык, столкнулся с проблемой, которую не мог понять.
Мой вопрос не о самом алгоритме, а о ссылках и рекурсии в python
# Background
Given a set of distinct integers, nums, return all possible subsets (the power set).
Example:
Input: nums = [1,2,3]
Output:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
Итак, у меня есть решение класса:
class Solution:
def find_subsets(self , nums , current_sub , all_subsets , index):
# print(current_sub) This will print the wanted results list
all_subsets.append(current_sub) # Here the all_subsets list will be [1][1] , [1,2] [1,2] [1,2]
if index < len(nums):
for i in range(index , len(nums)):
current_sub.append(nums[i])
self.find_subsets(nums , current_sub , all_subsets ,i + 1)
current_sub.pop()
# Entery point
def subsets(self, nums: List[int]) -> List[List[int]]:
current_sub = []
all_subsets = []
self.find_subsets(nums , current_sub , all_subsets , 0)
return all_subsets # output -> [[],[],[],[],[],[],[],[]]
print(current_sub)
напечатает все нужные подмножества, но в конце я получу пустой список внутри all_subsets
Чего мне не хватает? all_subsets
передается по ссылке? что происходит под капотом?