Преобразование в плавающий список списков, содержащих строки - PullRequest
1 голос
/ 07 мая 2019

У меня есть этот список списков, содержащий строковые значения:

List = [['138.314038', '-35.451642'],
['138.313946', '-35.45212'],
['138.313395', '-35.45291'],
['138.312425', '-35.453978'],
['138.311697', '-35.454879'],
['138.311042', '-35.45569'],
['138.310407', '-35.45647'],
['138.315603', '-35.44981'],
['138.315178', '-35.450241'],
['138.314603', '-35.450948'],
['138.314038', '-35.45164']]

Я пытаюсь преобразовать каждое строковое значение в списке списков в значение с плавающей запятой.

Я пытался:

results = [float(i) for i in List]

Но я только индексирую списки, а не значения внутри.Как я могу сделать это, используя аналогичный подход и сохраняя ту же структуру переменной List.

Ответы [ 6 ]

4 голосов
/ 07 мая 2019

У вас есть список, поэтому используйте двойное понимание:

results = [[float(i) for i in e] for e in List]
3 голосов
/ 07 мая 2019

Я использую numpy конвертировать

np.array(List).astype(float).tolist()
Out[185]: 
[[138.314038, -35.451642],
 [138.313946, -35.45212],
 [138.313395, -35.45291],
 [138.312425, -35.453978],
 [138.311697, -35.454879],
 [138.311042, -35.45569],
 [138.310407, -35.45647],
 [138.315603, -35.44981],
 [138.315178, -35.450241],
 [138.314603, -35.450948],
 [138.314038, -35.45164]]
2 голосов
/ 07 мая 2019
#you can use map function as well
results = [list(map(float,x)) for x in List]
2 голосов
/ 07 мая 2019

Может быть безобразно, используя два list map с:

print(list(map(lambda x: list(map(float,x)), List)))

Выход:

[[138.314038, -35.451642], [138.313946, -35.45212], [138.313395, -35.45291], [138.312425, -35.453978], [138.311697, -35.454879], [138.311042, -35.45569], [138.310407, -35.45647], [138.315603, -35.44981], [138.315178, -35.450241], [138.314603, -35.450948], [138.314038, -35.45164]]

Напечатайте лучше:

pprint.pprint(list(map(lambda x: list(map(float,x)), List)))

Выход:

[[138.314038, -35.451642],
 [138.313946, -35.45212],
 [138.313395, -35.45291],
 [138.312425, -35.453978],
 [138.311697, -35.454879],
 [138.311042, -35.45569],
 [138.310407, -35.45647],
 [138.315603, -35.44981],
 [138.315178, -35.450241],
 [138.314603, -35.450948],
 [138.314038, -35.45164]]
1 голос
/ 07 мая 2019

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

floats = [ list(map(float, i)) for i in List ]
1 голос
/ 07 мая 2019

вы можете расширить список, например так:

results = [list(map(float, l)) for l in List]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...