Tengo una lista de elementos almacenados en una lista como una lista de la lista. Quiero eliminar un carácter en particular de cada elemento si se encuentra. Puedo hacerlo si solo uso el primer elemento de la lista. Sin embargo, obtengo "IndexError: índice de lista fuera de rango" mientras uso el bucle for.
Esta es mi lista.
list1 = [['2.6x3.65'],[],['2','2.9x1.7','2.5x1.3']]
Así es como lo hago para el primer elemento.
if('x' in list1[0][0]):
rep1 = re.sub('x', ', ', list1[0][0])
Esto me da la salida como 2.6, 3.65 en formato de cadena que luego puedo convertir a flotante.
Sin embargo, cuando implemento lo mismo usando for loop usando el siguiente código:
for i in list1[i][i]:
if('x' in list1[i][i]):
rep2 = re.sub('x', ', ', list1[i][i])
Da "IndexError: índice de lista fuera de rango" mientras se usa el bucle for.
Mi resultado esperado es el siguiente:
list2 = [[2.6, 3.65],[],[2, 2.9, 1.7, 2.5, 1.3]]
Puede utilizar la comprensión de listas anidadas:
list1 = [['2.6x3.65'], [], ['2', '2.9x1.7', '2.5x1.3']]
list2 = [sum([list(map(float, i.split('x'))) for i in l], []) for l in list1]
Salida:
[[2.6, 3.65], [], [2.0, 2.9, 1.7, 2.5, 1.3]]
Para no mezclar map()
con la comprensión de listas:
list2 = [[float(e) for i in l for e in i.split('x')] for l in list1]
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras