Cómo eliminar el último carácter de cada cadena en una lista de cadenas

Tengo las cadenas ‘80010’, ‘80030’, ‘80050’ en una lista, como en

test = ['80010','80030','80050'] 

¿Cómo puedo eliminar el último carácter (en este caso, el último dígito de cada cadena que es un 0), de modo que pueda terminar con otra lista que contenga solo los primeros cuatro dígitos / caracteres de cada cadena? Así que termina con algo como

 newtest = ['8001', '8003', '8005'] 

Soy muy nuevo en Python pero lo he intentado con sentencias if-else, agregando, utilizando la indexación [: -1], etc., pero nada parece funcionar a menos que termine de eliminar todos mis otros ceros. Muchas gracias!

 test = ["80010","80030","80050"] newtest = [x[:-1] for x in test] 

La nueva prueba contendrá el resultado ["8001","8003","8005"] .

[x[:-1] for x in test] crea una nueva lista (usando la comprensión de la lista ) haciendo un bucle sobre cada elemento en la test y poniendo una versión modificada en el más newtest . El x[:-1] significa tomar todo en el valor de cadena x hasta el último elemento, pero sin incluirlo.

No estás tan lejos. El uso de la notación de división [: -1] es el enfoque correcto. Solo combínalo con una lista de comprensión:

 >>> test = ['80010','80030','80050'] >>> [x[:-1] for x in test] ['8001', '8003', '8005'] 

somestring[:-1] le ofrece todo, desde el carácter en la posición 0 (inclusive) hasta el último carácter (exclusivo).

Solo para mostrar una solución ligeramente diferente a la comprensión, Teniendo en cuenta que otras respuestas ya explicaron el corte, simplemente analizo el método.

Con la función de mapa.

 test = ['80010','80030','80050'] print map(lambda x: x[:-1],test) # ['8001', '8003', '8005'] 

Para obtener más información sobre esta solución, lea la breve explicación que hice en otra pregunta similar.

Convertir una lista en una secuencia de cadenas triples

En python @Matthew la solución es perfecta. Pero si de hecho eres un principiante en la encoding en general, debo recomendar esto, menos elegante, pero la única forma en muchos otros escenarios:

 #variables declaration test = ['80010','80030','80050'] lenght = len(test) # for reading and writing sakes, len(A): lenght of A newtest = [None] * lenght # newtest = [none, none, none], go look up empty array creation strLen = 0 # temporary storage #adding in newtest every element of test but spliced for i in range(0, lenght): # for loop str = test[i] # get n th element of test strLen = len (str) # for reading sake, the lenght of string that will be spliced newtest[i] = str[0:strLen - 1] # n th element of newtest is the spliced n th element from test #show the results print (newtest) # ['8001','8003','8005'] 

ps: este script, aunque no sea el mejor, funciona en python! Buena suerte a cualquier progtwigdor recién llegado.