Я пытался решить проблему перечисления наборов мощности на Вопрос 78 на Leetcode. Я столкнулся с решением , которое использует списочные выражения, и оно работает. Я попытался расширить его и довести до конца документацию по Python , чтобы убедиться, что я получаю правильный синтаксис, но я, похоже, захожу в бесконечный цикл.
При заданном наборе различных целых чисел возвращаются все возможные подмножества.
(набор мощности).
Примечание. Набор решений не должен содержать повторяющихся подмножеств.
Пример:
Input: nums = [1,2,3]
Output:
[
[3],
[1],
[2],
[1,2,3],
[1,3],
[2,3],
[1,2],
[]
]
Код в решении:
def subsets(nums):
nums.sort()
result = [[]]
for num in nums:
result += [i + [num] for i in result]
return result
Код с моим изменением:
def subsets(nums):
"""
:type nums: List[int]
:rtype: List[List[int]]
"""
result = [[]]
for num in nums:
for list_ in result:
result.append([num] + list_)
return result
Я думаю, что на каждой итерации цикла for list_ in result:
результат становится больше, и поэтому я бы не стал его заканчивать, но почему это не то же самое с пониманием списка? Чего мне не хватает?