Python Summe, warum nicht Strings? [geschlossen
Python hat eine eingebaute Funktionsum
, was effektiv äquivalent ist zu:
def sum2(iterable, start=0):
return start + reduce(operator.add, iterable)
für alle Arten von Parametern mit Ausnahme von Zeichenfolgen. Es funktioniert für Zahlen und Listen, zum Beispiel:
sum([1,2,3], 0) = sum2([1,2,3],0) = 6 #Note: 0 is the default value for start, but I include it for clarity
sum({888:1}, 0) = sum2({888:1},0) = 888
Warum wurden Zeichenfolgen speziell ausgelassen?
sum( ['foo','bar'], '') # TypeError: sum() can't sum strings [use ''.join(seq) instead]
sum2(['foo','bar'], '') = 'foobar'
Ich scheine mich aus diesem Grund an Diskussionen in der Python-Liste zu erinnern, daher wäre eine Erklärung oder ein Link zu einem Thread, der dies erklärt, in Ordnung.
Bearbeite: Mir ist bewusst, dass die Standardmethode @ is"".join
. Meine Frage ist, warum die Option zur Verwendung von sum für Zeichenfolgen gesperrt wurde und beispielsweise für Listen kein gesperrt wurde.
Edit 2: Obwohl ich glaube, dass dies bei all den guten Antworten, die ich bekommen habe, nicht nötig ist, lautet die Frage:Warum funktioniert die Summe bei einem iterablen Wert, der Zahlen enthält, oder bei einem iterablen Wert, der Listen enthält, aber nicht bei einem iterablen Wert, der Zeichenfolgen enthält?