Каким может быть список непонимания для этой суммы?

def nested_sum(L):
    return sum( nested_sum(x) if isinstance(x, list) else x for x in L )

Это решение было дано Евгенией в следующем сообщении: сумма вложенного списка в Python

Я просто пытался воссоздать его без использования списка понимания, но я не могу его получить. Как я мог это сделать?


person ezitoc    schedule 15.08.2013    source источник


Ответы (1)


В коде используется выражение генератора. , а не понимание списка.

Используйте цикл и += суммируйте результаты:

def nested_sum(L):
    total = 0
    for x in L:
        total += nested_sum(x) if isinstance(x, list) else x
    return total

или, если вы хотите, чтобы условное выражение преобразовывалось в оператор if также:

def nested_sum(L):
    total = 0
    for x in L:
        if isinstance(x, list):
            total += nested_sum(x)
        else:
            total += x
    return total
person Martijn Pieters    schedule 15.08.2013
comment
@ezitoc: Чего-то не хватает в ответе, что вы снова его не приняли? :-) - person Martijn Pieters; 15.08.2013
comment
Спасибо, я искал ключевое слово условное выражение. Я очень новичок в этом. И выражение генератора тоже для меня новое. - person ezitoc; 15.08.2013
comment
ну сначала да, но потом я нашел то, что я только что прокомментировал :) - person ezitoc; 15.08.2013