Warum heißt es string.join(list) und nicht list.join(string)?
Das hat mich schon immer verwirrt. Es scheint so, als ob dies schöner wäre:
my_list = ["Hello", "world"]
print(my_list.join("-"))
# Produce: "Hello-world"
als dies:
my_list = ["Hello", "world"]
print("-".join(my_list))
# Produce: "Hello-world"
Gibt es einen bestimmten Grund, warum das so ist?
1661
3
Das liegt daran, dass jede beliebige Iterable verknüpft werden kann, nicht nur Listen, aber das Ergebnis und der "Joiner" sind immer Strings.
Zum Beispiel:
Weil die Methode
join()
in der String-Klasse und nicht in der List-Klasse liegt?Ich stimme zu, dass es komisch aussieht.
Siehe http://www.faqs.org/docs/diveintopython/odbchelper_join.html:
--- Mark Pilgrim, Eintauchen in Python
In erster Linie, weil das Ergebnis von
someString.join()
eine Zeichenkette ist.Die Sequenz (Liste oder Tupel oder was auch immer) erscheint nicht im Ergebnis, nur eine Zeichenkette. Weil das Ergebnis eine Zeichenkette ist, macht es Sinn als eine Methode einer Zeichenkette.