Περισσότερα
Γιατί είναι string.join(list) αντί για list.join(string);
Αυτό πάντα με μπέρδευε. Φαίνεται ότι αυτό θα ήταν καλύτερο:
my_list = ["Hello", "world"]
print(my_list.join("-"))
# Produce: "Hello-world"
από αυτό:
my_list = ["Hello", "world"]
print("-".join(my_list))
# Produce: "Hello-world"
Υπάρχει κάποιος συγκεκριμένος λόγος που είναι έτσι;
1661
3
Αυτό συμβαίνει επειδή οποιαδήποτε επαναληπτική μεταβλητή μπορεί να ενωθεί, όχι μόνο λίστες, αλλά το αποτέλεσμα και ο "joiner" είναι πάντα συμβολοσειρές.
Για παράδειγμα:
Επειδή η μέθοδος
join()
βρίσκεται στην κλάση string, αντί για την κλάση list;Συμφωνώ ότι φαίνεται περίεργο.
Βλέπε http://www.faqs.org/docs/diveintopython/odbchelper_join.html:
Ιστορική σημείωση. Όταν έμαθα για πρώτη φορά Python, περίμενα ότι η join θα ήταν μια μέθοδος
Κυρίως επειδή το αποτέλεσμα μιας
someString.join()
είναι μια συμβολοσειρά.Η ακολουθία (λίστα ή πλειάδα ή οτιδήποτε άλλο) δεν εμφανίζεται στο αποτέλεσμα, παρά μόνο ένα αλφαριθμητικό. Επειδή το αποτέλεσμα είναι ένα αλφαριθμητικό, έχει νόημα ως μέθοδος ενός αλφαριθμητικού.