Please ignore secret bonuses. Secret tests do NOT award bonus. Max hw grade is 30+2 bonus efficiency

Do you need help?

Notice Board

Problema nelle liste

Neo (6720 points)
7 27 37
in Programmare in Python by (6.7k points)

Buona sera a tutti!

Durante la scrittura degli homework mi sto imbattendo sempre nel solito problema... Quando converto una variabile in lista a quest'ultima vengono aggiunti n elementi vuoti o con delle "," senza che ne capisca il motivo! Se infatti ad esempio provo a trasformare una variabile che mi viene data in return in una funzione precedente in lista ---> Lista = list(Variabile_return) dove Variabile_return = ciao quest'ultima mi viene fornita come Lista = [" ", "," " ", " ", "c", "i", " ", "a", "o"] (E' un esempio! Ma la scrittura in output è pressochè simile) Avete qualche idea sul motivo?

708 views
closed

5 Answers

Best answer
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
selected by
Se al costruttore di liste list() passi un oggetto iterabile (in questo caso una stringa), ti viene fuori una lista degli elementi che stanno nell'oggetto, in questo caso i caratteri della stringa.
Neo (6720 points)
7 27 37
by (6.7k points)
Ma se il return Variabile1 della funzione precedente mi da in output il messaggio "Ciao" e nella funzione successiva inizializzo una nuova variabile a quel valore trasformato in lista cosa potrebbe generare quegli elementi "randomici"? Mi sta sorgendo anche un dubbio, non è che sbagli nell'inizializzare la variabile? Variabile1_trasformata = list(Nome_funzione_contenente_variabile1) o Variabile1_trasformata = list(Variabile1)? Il secondo metodo non dovrebbe essere sbagliato?
andrea.sterbini (207920 points)
749 1267 2373
by (208k points)
Se ho capito bene, quello che vuoi fare è "costruire una lista che ha come unico elemento il valore della variabile".
Prova con
[variabile]
Neo (6720 points)
7 27 37
by (6.7k points)
Ho risolto riflettendo sulla vostra risposta, grazie mille!
by (9.9k points)

Ciao, hai controllato la presenza di spazi nella stringa di ritorno? Perché la funzione list() converte in elemento anche gli spazi oltre ai caratteri alfanumerici!

Neo (6720 points)
7 27 37
by (6.7k points)
Ho controllato tramite opportuni print, prima e dopo, il contenuto della variabile! Eppure nella variabile di partenza non ce ne sono...
m
moin.uddin (820 points)
4 10 19
by (820 points)
>>>s='lalala'
>>>sa=list(s)
>>>sa
['l', 'a', 'l', 'a', 'l']

ciao ho provato un esempio, mi sembra che funziona come dovrebbe, forse dovresti controllare la tua funzione di che ritorna il valore nel Lista = list(Variabile_return) =)

Neo (6720 points)
7 27 37
by (6.7k points)
Si, la funzione "funziona" nel modo corretto! Il problema mi si presenta solo in questo specifico caso ossia nella trasformazione in lista di una variabile ottenuta da un'altra funzione
1794095 (990 points)
5 13 22
by (990 points)
hai provato col 7-te
francesco.dev (33560 points)
21 51 129
by (33.6k points)

Ciao!
Hai provato ad utilizzare il metodo variabile.split()?

Te lo consiglio perché la funzione list crea una lista contenente ogni singolo carattere (nel caso di una stringa, quindi 'ciao' diventerà 'c' 'i' 'a' 'o'), invece il metodo split crea un unico elemento della lista contenente l'intera stringa!

Se non è questo il problema, ricorda di controllare anche il codice presente precedentemente e che la variabile che passi per usare la funzione list contenga realmente ciò che pensi contenga! Potrebbe essere che ti sei sbagliato sul suo contenuto. Ti consiglio di mettere qualche stampa (print) in punti cruciali per capire qual è il reale problema, perché fidati che tale funzione funziona alla perfezione!

Fammi sapere,
- Francesco Pio Scognamiglio

m
moin.uddin (820 points)
4 10 19
by (820 points)
però se hai una stringa più lunga ad esempio 'Hello World' usando il metodo split verrebbe :

s='HELLO WORLD'
s.split()
Out[8]: ['HELLO', 'WORLD']
francesco.dev (33560 points)
21 51 129
by (33.6k points)
Esattamente! Perché come parametro si può passare il carattere per cui si deve dividere la stringa (di default è, appunto, lo spazio)
Infatti se scrivessi:
s='ciao mondo'
s.split('m')
Out[8]: ['ciao ', 'ondo']
Neo (6720 points)
7 27 37
by (6.7k points)
Conosco il metodo .split ma in questo caso mi occorreva esattamente la trasformazione in lista