Я пытаюсь найти аккуратный способ суммирования списка и списка списков в одной и той же функции, пока у меня есть:
import operator
"""
Fails late for item = ['a', 'b']
"""
def validate(item):
try:
return sum(item) == sum(range(1, 10))
except TypeError:
return sum(reduce(operator.add, item)) == sum(range(1, 10))
"""
Not valid for item = [1,2,[3,4,5]]
"""
def validate2(item):
if isinstance(item[0], int):
return sum(item) == sum(range(1, 10))
else:
return sum(reduce(operator.add, item)) == sum(range(1, 10))
print validate([1, 2, 3, 4, 5, 6, 7, 8, 9])
print validate([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print validate2([1, 2, 3, 4, 5, 6, 7, 8, 9])
print validate2([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
... но ни один из них не кажется мне совершенно правильным (причины в строках документа). Я хочу знать, есть ли лучший способ суммирования списков и списков списков, который не требует, чтобы я перехватывал исключения или фактически анализировал список, прежде чем функция решит, что делать.
Очевидно, я все еще ожидаю, что ['a', 'b']
будет недействительным.