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

Do you need help?

Notice Board

Eliminare ultimo carattere da ogni stringa

D
Dave (1010 points)
14 26 33
in Es2 by (1.0k points)
closed by
Buonasera a tutti. Data una lista di stringhe esiste un metodo per eliminare l'ultimo carattere da ogni stringa presente in lista?Se faccio lista=lista[:-1] viene eliminata giustamente l'intera ultima stringa. Devo necessariamente affidarmi ad un ciclo?
3.6k views
closed with the note: Answered

6 Answers

Best answer
D
Domenicobrz (1470 points)
3 9 19
by (1.5k points)
selected by

Un'altra soluzione al tuo problema è tramite l'uso di una semplice comprehension

Dato :

    lista = ["venti", "trenta", "quaranta", "cinquanta"]

Se riassegnamo i valori della lista tramite comprehension

    lista = [ stringa[:-1] for stringa in lista ]

Otterrai :

    print(lista)

    Out#   ['vent', 'trent', 'quarant', 'cinquant']

edoardo (7090 points)
19 52 67
by (7.1k points)
risposta perfetta :P
T
Tommaso Maldera (220 points)
0 2 6
by (220 points)
Considerando che fai riferimento a più stringhe penso che l'utilizzo di un 'For' sia più che adeguato. Se preferisci puoi pure fare riferimento al comando 'While'. Spero di esserti stato utile.
edoardo (7090 points)
19 52 67
by (7.1k points)

Ciao, forse potresti fare in questo modo: lista[indice_valore][:-1], anche se forse non ti restituisce ciò che vuoi tu. Ad esempio a = ['ciao'] se fai a = a[0][:-1] hai a = 'cia'.

Una valida opzione potrebbe comunque essere un ciclo!

francesco.dev (33560 points)
21 51 129
by (33.6k points)

Ciao Dave!

Per eliminare l'ultimo carattere di una stringa ti conviene:
- Convertire la stringa in una lista;
- Cancellare l'ultimo carattere usando semplicemente del lista[len(lista)-1];
- Convertire la lista in stringa per tornare al punto iniziale, usando il metodo ''.join(lista).

Questo perché ti ricordo che le stringhe sono immutabili!

Un'altra soluzione sarebbe:
- Creare una sottostringa che è uguale alla stringa iniziale meno l'ultimo carattere, ovvero sottostringa = stringa[:-1];
- Inserire tale sottostringa come sostitutivo della stringa iniziale presente nella lista, semplicemente usando gli indici, quindi ls[i] = sottostringa.

Sperando di esserti stato utile, per incomprensioni o problemi non esitare a chiedere!
Se ti sono stato d'aiuto, ricorda di selezionare la mia risposta come migliore.

- Francesco Pio Scognamiglio

gianpcr (4620 points)
5 16 34
by (4.6k points)
Ciao, il metodo secondo me migliore è quello tramite l'utilizzo della funzione map. Non credo sia stata ancora spiegata a lezione ma in poche parole quello che fa è applicare una funzione lambda ad ogni elemento della lista. Puoi quindi creare una funzione lambda che elimina l'ultimo carattere della stringa e successivamente passarla alla funzione map. Attento al fatto che map ritorna un oggetto map che va convertito il lista. In questo modo hai un codice più veloce di una list comprehension. Per qualsiasi dubbio non esitare a chiedere :)
D
Domenicobrz (1470 points)
3 9 19
by (1.5k points)
Nel suo caso specifico map probabilmente incorrerebbe nell'overhead di dover chiamare una funzione per ogni elemento dell'array, map almeno teoricamente è più indicato se ad ogni elemento della lista va applicata una funzione già definita piuttosto che una semplice espressione

Guido stesso favorisce l'utilizzo delle comprehensions: http://www.artima.com/weblogs/viewpost.jsp?thread=98196
Jury Francia (7520 points)
23 76 100
by (7.5k points)
per eliminare un carattere da una stringa se non sbaglio c'è anche il metodo .strip( ), che come parametro devi passare la stringa da cui vuoi eliminare l'ultimo carattere con la posizione -1 esempio stringa.strip(stringa[-1]), dato che tu hai una lista penso dovresti fare un ciclo for che presa ogni volta la stringa esegue questo metodo.