Преобразование списка строк в список кортежей, содержащих целые числа - PullRequest
1 голос
/ 02 июля 2011

Я разбираю файл XML в список координат, и это строка кода, которую я использую

nodes = [(int(x.text.strip().split(' ')[0]),int(x.text.strip().split(' ')[1])) for x in tree.getroot()[0]]

Где tree.getroot () выведет что-то вроде ["100 200", "40 90", ...] Я использую этот код, чтобы убрать пробел, разделить его на два числа и преобразовать их в целые числа, но я не могу не смотреть на этот код и думать, что он просто не может быть очень быстрым. Есть идеи по его оптимизации?

Ответы [ 3 ]

0 голосов
/ 02 июля 2011

Неа. Но это можно сильно упростить.

>>> L = [' 1 2 ', '3 4 ']
>>> [tuple(int(y) for y in x.split()) for x in L]
[(1, 2), (3, 4)]
0 голосов
/ 07 августа 2018

Просто хотел поблагодарить Игнасио.Необходим аналогичный подход для перевода координат в список кортежей.В моем случае это было в формате ['412.47298,198.204', 412.05498,198.597 ', ...].Нужно избавиться от запятой и преобразовать ее в формат с плавающей точкой.

Это сработало

some_float = ['412.47298,198.204', '412.05498,198.597'] 
[tuple(float(y) for y in x.split(",")) for x in some_float]
0 голосов
/ 02 июля 2011

Вы всегда должны спрашивать себя , почему вы хотите что-то оптимизировать . На самом деле не имеет значения, считаете ли вы что-то быстрым, а иногда даже не важно, быстрое ли оно, пока оно достаточно быстрое.

Тем не менее, это выглядит достаточно хорошо для большинства случаев использования, о которых я могу подумать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...