Estoy tratando de obtener una salida de [3.1] donde el número en la lista es flotante.

b = "3.1"
list1 = []
for i in b:
    list1.append(i)
print(list1)

Espero que la salida sea [3.1], pero el código anterior genera ['3', '.', '1']

-1
ProgrammingWarrior 10 may. 2019 a las 10:40

4 respuestas

La mejor respuesta

Veamos que pasa debajo del capó aquí

In [9]: b = "3.1"                                                                                                                                                                 

In [10]: for i in b: 
    ...:     print(i) 
    ...:                                                                                                                                                                          
3
.
1

Como puede ver, dado que b es una cadena, iterar sobre una cadena le da caracteres individuales de la cadena, que terminan agregando a la lista, y la lista se ve como ['3', '.', '1']

Por lo tanto, debe convertir la cadena en un flotante y luego agregarla a la lista, que es tan simple como

In [11]: b = "3.1"                                                                                                                                                                

In [12]: [float(b)]                                                                                                                                                               
Out[12]: [3.1]

Aquí convertimos b en un flotante y creamos un único elemento de lista con 3.1 ya que es solo un elemento

Se puede aplicar una idea similar cuando se trata de una lista de cadenas y cada cadena representa un flotador, donde convertimos cada elemento en un flotador y hacemos una nueva lista.

In [13]: b = [ "2.7", "2.9", "3.1"]                                                                                                                                               

In [14]: [float(i) for i in b]                                                                                                                                                    
Out[14]: [2.7, 2.9, 3.1]
0
Devesh Kumar Singh 10 may. 2019 a las 07:56

for i in b: list1.append(i) significa "para cada carácter en la cadena b, agregue ese carácter a la lista list1", dándole exactamente lo que solicitó: una lista de tres caracteres.

Si solo desea convertir b en flotante y agregar a la lista, esto es suficiente:

list1.append(float(b))
1
Amadan 10 may. 2019 a las 07:42

En el código, la variable b es de formato de cadena. Conviértalo en flotante y agregue a la lista.

b = "3.1"
list_1 = []
list_1.append(float(b))
print (list_1)

Esto debería darle el resultado deseado.

Como lo está haciendo, la variable b está en formato de cadena. Esto hace que el bucle for agregue caracteres individuales a la lista que es respectivamente '3', '.', '1'. La conversión de una cadena a flotante debería resolver su problema.

0
Chandan M S 10 may. 2019 a las 07:45

Pruebe esto :

list1 = [float(b)]

SALIDA :

[3.1]

La razón por la que obtiene una lista como ['3', '.', '1'] es porque está iterando sobre todos los caracteres de la cadena b. Necesita convertir el tipo de cadena de b para flotar y luego agregarlo a una lista.

0
Arkistarvh Kltzuonstev 10 may. 2019 a las 07:42