Как исправить ошибку «Nontype» при подходе к функциональному способу решения проблемы двух сумм в python

grouperArray.sort(function (a, b) {
    var aSize = a.gsize;
    var bSize = b.gsize;
    var aLow = a.glow;
    var bLow = b.glow;
    console.log(aLow + " | " + bLow);

    if(aSize == bSize)
    {
        return (aLow < bLow) ? -1 : (aLow > bLow) ? 1 : 0;
    }
    else
    {
        return (aSize < bSize) ? -1 : 1;
    }
});
1
задан TrebledJ 18 January 2019 в 09:41
поделиться

1 ответ

Эта строка является источником проблем:

solnSet.append(nums[0])

При добавлении к list ничего не возвращается (поэтому по умолчанию возвращается None). Когда ваша функция выполняет рекурсию для allSum(solnSet.append(nums[0]), nums[1:], target), , вы фактически передаете None в первый аргумент .

Это вызовет исключение 'NoneType' object is not iterable, когда ваш код запускает map(lambda x: tuple(x), solnSet) или sum(solnSet).


Чтобы решить эту проблему, вы можете сделать

allSum(solnSet + [nums[0]], nums[1:], target)

(это создает новый список и не изменяет оригинал)

[1118 ] или

solnSet.append(nums[0])
allSum(solnSet, nums[1:], target)

(но этот действительно изменяет оригинал).

0
ответ дан TrebledJ 18 January 2019 в 09:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: