Форматировать элементы в списке автоматически - PullRequest
0 голосов
/ 10 июля 2019

Как правильно отформатировать список элементов без необходимости делать это вручную?

xy_coords = [(15, 5),
(9, 0),
(3, 5),
(13, 7),
(21, 1),
(19, 22),
(22, 2),
(11, 11),
(10, 21),
(24, 2),
(19, 19)]

Ответы [ 2 ]

2 голосов
/ 10 июля 2019

Прежде всего, переменная xy_coords не является списком. Вы получите ошибку, если вы запустите эту строку. Игнорируя это и предполагая, что xy_coords является String, это будет выглядеть так:

xy_coords = '[(15, 5) (9, 0) (3, 5) (13, 7) (21, 1) (19, 22) (22, 2) (11, 11) (10, 21) (24, 2) (19, 19)]'

(обратите внимание на одинарные кавычки выше, что делает xy_coords строкой)

Теперь, чтобы добавить запятые между каждым кортежем, вы можете сделать это:

new = ''
a = string.split(') ')
for k in a[:-1]:
    new+=(k+'), ')
new+=a[-1]
print(new)

OUTPUT

[(15, 5), (9, 0), (3, 5), (13, 7), (21, 1), (19, 22), (22, 2), (11, 11), (10, 21), (24, 2), (19, 19)]
1 голос
/ 10 июля 2019

Если xy_coords - строка, я бы использовал RegEx , чтобы найти все вхождения пар (x, y), а затем преобразовать строки в целые числа.

Это можно сделать с помощью функции re.findall. RegEx может быть минимальным и соответствовать только двум координатам. Используя группы в вашем RegEx, функция вернет список строковых кортежей, которые вам нужно преобразовать в int.

Например:

import re

xy_coords = '[(15, 5) (9, 0) (3, 5) (13, 7) (21, 1) (19, 22) (22, 2) (11, 11) (10, 21) (24, 2) (19, 19)]'

xy_coords = [
    tuple(map(int, coord))
    for coord in re.findall(r"(\d+),\s*(\d+)", xy_coords)
]
print(xy_coords)

Результатом является список целых кортежей:

[(15, 5), (9, 0), (3, 5), (13, 7), (21, 1), (19, 22), (22, 2), (11, 11), (10, 21), (24, 2), (19, 19)]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...