Perché è string.join(list) invece di list.join(string)?
Questo mi ha sempre confuso. Sembra che questo sarebbe più bello:
my_list = ["Hello", "world"]
print(my_list.join("-"))
# Produce: "Hello-world"
che questo:
my_list = ["Hello", "world"]
print("-".join(my_list))
# Produce: "Hello-world"
C'è una ragione specifica per cui è così?
1661
3
È perché qualsiasi iterabile può essere unito, non solo le liste, ma il risultato e il "joiner" sono sempre stringhe.
Per esempio:
Perché il metodo
join()
è nella classe string, invece che nella classe list?Sono d'accordo che sembra strano.
Vedi http://www.faqs.org/docs/diveintopython/odbchelper_join.html:
--- Mark Pilgrim, Dive into Python
Principalmente perché il risultato di una
someString.join()
è una stringa.La sequenza (lista o tupla o altro) non appare nel risultato, solo una stringa. Poiché il risultato è una stringa, ha senso come metodo di una stringa.