плавающий список строк - PullRequest
       10

плавающий список строк

0 голосов
/ 28 февраля 2020

Я хочу задать вопрос о преобразовании строк в числа с плавающей точкой в ​​python.

У меня есть следующий список:

coordinates_S
>>> ['0.00000000', '0.00000000', '0.10224900']

, и я хочу преобразовать каждый элемент в десятичную форму, используя float()

Очевидно, float(coordinates_S не сработало :

TypeError: float() argument must be a string or a number, not 'list'

, что имеет смысл.

Я пробовал это, однако:

flt_coordinates_S = []
    for item in coordinates_S:
        flt_coordinates_S += float(item)

то есть перебирать каждый элемент в списке, и это не работает. Ошибка:

TypeError: 'float' object is not iterable

, но я не могу понять, почему. Что я здесь не так делаю?

Я не нашел вопроса, который включает в себя итерации элементов в списке и , конвертирующих их в число с плавающей точкой.

Ответы [ 4 ]

2 голосов
/ 28 февраля 2020

flt_coordinates_S += float(item) эквивалентно flt_coordinates_S.extend(float(item)); += расширяет список содержимым другой итерации.

Вы хотите добавить a float к списку.

flt_coordinates_S = []
for item in coordinates_S:
    flt_coordinates_S.append(float(item))
2 голосов
/ 28 февраля 2020

Проблема в том, что вы использовали += (используется для расширения списка элементами из другого списка), когда вы должны были использовать .append() (используется для добавления одного элемента в список). Вот почему вы получаете ошибку, потому что она считает float(item) списком, потому что вы использовали +=.

coordinates_S = ['0.00000000', '0.00000000', '0.10224900']
flt_coordinates_S = []
for item in coordinates_S:
    flt_coordinates_S.append(float(item))

В качестве альтернативы, если вы хотите сделать это в одной строке:

coordinates_S = ['0.00000000', '0.00000000', '0.10224900']
flt_coordinates_S = [float(item) for item in coordinates_S]
1 голос
/ 28 февраля 2020
lst = ['0.00000000', '0.00000000', '0.10224900']
lst_float = [float(i) for i in lst]
print(lst_float)
[0.0, 0.0, 0.102249]

Попробуйте это. Проблема с вашим кодом + =. Это работает в случае строки или чисел. Не добавлять элементы в список

0 голосов
/ 28 февраля 2020

Вы можете использовать карту для преобразования всех элементов списка непосредственно в новый список

 flt_coordinates_S = list(map(float,coordinates_S))
...