Περισσότερα
Τι ακριβώς κάνει η μέθοδος .join();
Είμαι αρκετά νέος στην Python και είμαι εντελώς μπερδεμένος με την .join()
που έχω διαβάσει ότι είναι η προτιμώμενη μέθοδος για τη συνένωση συμβολοσειρών.
Δοκίμασα:
strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring().join(strid)
και πήρα κάτι σαν:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
Γιατί λειτουργεί έτσι; Δεν θα έπρεπε το "595" να προστεθεί αυτόματα;
205
3
Κοιτάξτε προσεκτικά την έξοδό σας:
Έχω επισημάνει τα "5", "9", "5" της αρχικής συμβολοσειράς σας. Η μέθοδος της Python
join()
είναι μια μέθοδος συμβολοσειράς, και παίρνει μια λίστα πραγμάτων για να συνδεθεί με τη συμβολοσειρά. Ένα απλούστερο παράδειγμα μπορεί να βοηθήσει στην εξήγηση:Το "," παρεμβάλλεται μεταξύ κάθε στοιχείου της δοσμένης λίστας. Στην περίπτωσή σας, η "λίστα" είναι η αναπαράσταση της συμβολοσειράς "595", η οποία αντιμετωπίζεται ως η λίστα ["5", "9", "5"].
Φαίνεται ότι αναζητάτε το
+
:Η
join
παίρνει ένα επαναλήψιμο πράγμα ως όρισμα. Συνήθως είναι μια λίστα. Το πρόβλημα στην περίπτωσή σας είναι ότι μια συμβολοσειρά είναι η ίδια επαναλήψιμη, δίνοντας κάθε χαρακτήρα με τη σειρά. Ο κώδικάς σας αναλύεται ως εξής:το οποίο ενεργεί το ίδιο με αυτό:
και έτσι παράγει τη συμβολοσειρά σας:
Οι συμβολοσειρές ως iterables είναι ένα από τα πιο μπερδεμένα θέματα έναρξης με την Python.
Η join() είναι για τη συνένωση όλων των στοιχείων της λίστας. Για τη συνένωση μόνο δύο συμβολοσειρών το "+" θα είχε περισσότερο νόημα: