Στην Python, οι λίστες είναι μεταβλητά αντικείμενα, ενώ οι συμβολοσειρές είναι αμετάβλητες. Μετατρέποντας μια συμβολοσειρά σε λίστα, μπορείτε να τροποποιήσετε, να προσθέσετε ή να αφαιρέσετε μεμονωμένους χαρακτήρες ή υποτμήματα της συμβολοσειράς.

Ποιοι είναι οι διαφορετικοί τρόποι μετατροπής των συμβολοσειρών Python σε λίστες;

Όταν μετατρέπετε μια συμβολοσειρά σε λίστα, αλλάζετε τη δομή των δεδομένων έτσι ώστε να μπορεί να υποστηρίζει λειτουργίες λίστας. Αυτό, με τη σειρά του, επεκτείνει το φάσμα των επιλογών χειρισμού δεδομένων που έχετε στη διάθεσή σας.

Ακολουθούν μερικές από τις πιο συνηθισμένες μεθόδους για τη μετατροπή μιας συμβολοσειράς σε λίστα:

split()

Η μέθοδος split της Python χωρίζει μια συμβολοσειρά σε μια λίστα υποσυμβολοσειρών με βάση ένα συγκεκριμένο διαχωριστικό ή μοτίβο. Η γενική σύνταξη για αυτή τη μέθοδο είναι:

string.split(sep=None, maxsplit=-1)
python
  • string: Αυτή είναι η αρχική συμβολοσειρά.
  • sep (προαιρετικό): Αυτός είναι ο διαχωριστής όπου θα χωριστεί η συμβολοσειρά. Εάν δεν παρέχεται διαχωριστής, η μέθοδος χωρίζει την συμβολοσειρά σε κενά διαστήματα.
  • maxsplit (προαιρετικό): maxsplit ορίζει τον μέγιστο αριθμό διαχωρισμών που θα γίνουν. Αν θέλετε η Python να πραγματοποιήσει όλους τους πιθανούς διαχωρισμούς, μπορείτε είτε να ορίσετε την παράμετρο σε -1 είτε να την αφήσετε κενή.

Ένα παράδειγμα:

text = "blue,green,yellow,red"
print(f"List of colors = {text.split(',')}")
python

οδηγεί στο αποτέλεσμα:

List of colors = ['blue', 'green', 'yellow', 'red']
python

Οι f-strings είναι μια μορφή συμβολοσειράς Python που δέχεται οποιαδήποτε έκφραση ως σύμβολο κράτησης θέσης σε αγκύλες. Χρησιμοποιώντας αυτή τη μορφή, μπορούμε να συνδυάσουμε το αποτέλεσμα της συνάρτησης split() με τη συμβολοσειρά "List of colors = ".

list()

Η συνάρτηση Python list() χρησιμοποιείται για τη μετατροπή διαφόρων δομών δεδομένων, συμπεριλαμβανομένων των συμβολοσειρών, σε λίστες. Εάν περάσετε μια συμβολοσειρά ως όρισμα στη list(), κάθε γράμμα ή χαρακτήρας της συμβολοσειράς αποθηκεύεται ως ξεχωριστό στοιχείο στη λίστα που προκύπτει.

text = "Hello"
char_list = list(text)
print(char_list)
# Output: ['H', 'e', 'l', 'l', 'o']
python

Κατανόηση λίστας

Η κατανόηση λιστών είναι ένας συμπαγής τρόπος δημιουργίας λιστών συνδυάζοντας βρόχους και συνθήκες σε μία μόνο γραμμή.

text = "Hello World"
char_list = [char for char in text]
print(char_list)
# Output: ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
python

Σε αυτό το παράδειγμα, ξεκινάμε με τη συμβολοσειρά "Hello World" και δημιουργούμε μια λίστα που αποθηκεύεται στο char_list. Η κατανόηση της λίστας επαναλαμβάνεται για κάθε γράμμα (char) στη συμβολοσειρά text και το προσθέτει ως ένα μεμονωμένο στοιχείο στη λίστα char_list.

Κοπή συμβολοσειράς

Το string slicing είναι μια άλλη μέθοδος για τη μετατροπή των συμβολοσειρών Python σε λίστες. Εξάγει τμήματα μιας συμβολοσειράς (υποσυμβολοσειρές) και τα αποθηκεύει ως στοιχεία σε μια λίστα.

substring_list = string[start:stop:step]
python
  • start: Αυτός είναι ο δείκτης όπου ξεκινά η διαχωρισμός. Το υποστρώμα ξεκινά με τον χαρακτήρα σε αυτή τη θέση.
  • stop: Αυτός είναι ο δείκτης όπου τελειώνει η διαίρεση. Η ακολουθία περιλαμβάνει όλους τους χαρακτήρες μέχρι, αλλά όχι συμπεριλαμβανομένου του χαρακτήρα σε αυτή τη θέση.
  • step (προαιρετικό): Αυτή είναι η απόσταση μεταξύ κάθε επιλεγμένου χαρακτήρα κατά την εκτέλεση της διαίρεσης. Καθορίζει πόσοι χαρακτήρες πρέπει να παραλειφθούν μεταξύ κάθε επιλεγμένου χαρακτήρα.

convert(string) είναι μια συνάρτηση που ορίζεται από τον χρήστη και μετατρέπει μια συμβολοσειρά σε μια λίστα χαρακτήρων. Όταν εκτελείται η έκφραση list1[:0] = string, οι μεμονωμένοι χαρακτήρες της συμβολοσειράς εισάγονται στην κενή λίστα list1.

def convert(string):
    list1 = []
    list1[:0] = string
    return list1
str1 = "xyz"
print(convert(str1))
# Output: ['x', 'y', 'z']
python

re.findall()

Μπορείτε να χρησιμοποιήσετε τη συνάρτηση re.findall() για να μετατρέψετε συμβολοσειρές Python σε λίστες, εντοπίζοντας όλες τις εμφανίσεις ενός μοτίβου κανονικής έκφρασης σε μια συμβολοσειρά και ανακτώντας τις ως λίστα.

import re
text = "123 and 456 are numbers."
numbers_list = re.findall(r'\d+', text)
print(numbers_list)
# Output: ['123', '456']
python

Η κανονική έκφραση r'\d+' αναζητά ένα ή περισσότερα διαδοχικά ψηφία σε ένα κείμενο και τα επιστρέφει ως ξεχωριστά στοιχεία σε μια λίστα.

enumerate()

Η συνάρτηση enumerate() της Python ανακτά τόσο τον δείκτη όσο και την τιμή κάθε στοιχείου σε μια επαναλήψιμη δομή δεδομένων. Αν θέλετε η λίστα να περιλαμβάνει μόνο τις τιμές (δηλαδή τους χαρακτήρες της συμβολοσειράς), μπορείτε να συνδυάσετε enumerate() με μια λίστα κατανόησης:

text = "Python"
char_list = [char for index, char in enumerate(text)]
print(char_list)
# Output: ['P', 'y', 't', 'h', 'o', 'n']
python

JSON

Το JSON είναι ένα module που χρησιμοποιείται για την ανάγνωση και εγγραφή δεδομένων JSON και τη μετατροπή δομών δεδομένων Python σε μορφή JSON και αντίστροφα. Αν θέλετε να μετατρέψετε συμβολοσειρές Python σε λίστες χρησιμοποιώντας το module JSON, μπορείτε να το κάνετε αναλύοντας μια συμβολοσειρά σε ένα αντικείμενο Python.

import json
json_string = '[1, 2, 3, 4, 5]'
list_from_json = json.loads(json_string)
print(list_from_json)
# Output: [1, 2, 3, 4, 5]
python

Η συνάρτηση json.loads() αναλύει τη συμβολοσειρά JSON και τη μετατρέπει σε ένα αντίστοιχο αντικείμενο Python, στην περίπτωση αυτή, μια λίστα.

ast.literal

Η ενότητα ast (Abstract Syntax Trees) σού επιτρέπει να αξιολογήσεις μια συμβολοσειρά σε μια δομή δεδομένων Python, όπου η συμβολοσειρά ερμηνεύεται ως κυριολεκτική Python. Αν η συμβολοσειρά σου είναι σε έγκυρη μορφή κυριολεκτικής Python (όπως λίστα, λεξικό, αριθμός κ.λπ.), μπορείς να την μετατρέψεις με ασφάλεια στο αντίστοιχο αντικείμενο Python χρησιμοποιώντας ast.literal_eval().

import ast
string = "[1, 2, 3, 4, 5]"
my_list = ast.literal_eval(string)
print(my_list)
# Output: [1, 2, 3, 4, 5]
python

Μάθετε περισσότερα σχετικά με τον τρόπο μετατροπής μιας συμβολοσειράς σε ημερομηνία και ώρα στην Python στον Ψηφιακό Οδηγό μας.

Go to Main Menu