Расширение понимания списка, приводящее к бесконечному циклу в наборах мощности списка
Я пытался решить проблему перечисления наборов мощности в вопросе 78 о Leetcode. Я столкнулся с решением, которое использует списки и работает. Я попытался расширить его и довести до конца документацию по Python, чтобы убедиться, что я получаю правильный синтаксис, но я, похоже, захожу в бесконечный цикл.
Учитывая набор различных целых чисел, nums, возвращают все возможные подмножества (набор степеней).
Примечание. Набор решений не должен содержать повторяющихся подмножеств.
Пример:
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:
Цикл, результат становится больше, и поэтому я бы не дошел до конца, но почему это не то же самое с пониманием списка? Что мне не хватает?
1 ответ
Потому что сначала [i + [num] for i in result]
разрешается, а затем, как только это вычислено, result +=
часть происходит, что отличается от вашего, где вы добавляете 1 на 1. Другое решение добавляет все сразу, поэтому нет проблем