Я пытаюсь подвести список вложенных элементовсумма вложенного списка в Python
например, номер = [1,3,5,6, [7,8]], сумма = 30
I написал следующий код
def nested_sum(L):
sum=0
for i in range(len(L)):
if (len(L[i])>1):
sum=sum+nested_sum(L[i])
else:
sum=sum+L[i]
return sum
Приведенный выше код дает следующее сообщение об ошибке: объект 'межд' типа не имеет LEN() Я также попытался Len ([L [я]]), до сих пор не работает
Кто-нибудь может помочь? BTW, это Python 3.3
Попробуйте использовать одну из многочисленных функций [flatten] (http: // stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python), размещенный здесь до сих пор, и просто 'sum (flatten (L))' – georg
Для Python, если я использую рекурсивный вызов, нужно беспокоиться о том, чтобы занять слишком много времени, когда стек идет? Я знаю, для этой проблемы, я, вероятно, не буду беспокоиться об этом – Jin
@Jin Это, вероятно, немного рано для этого, но если вы хотите уменьшить потребление памяти, используйте [генератор] (http://wiki.python.org/ moin/Generators). – 2rs2ts