Удаление символов из кортежей в списке - PullRequest
3 голосов
/ 09 октября 2011

У меня есть список кортежей в этой форме (сгенерированный запросом БД):

[(280.73,), (281.359,), (280.630,)]

Я хотел бы удалить запятые () и запятую, чтобы получить что-то подобное, чтобы сделать его более совместимым сФорма в JSON.

[280.73,281.359,280.630]

Какой самый простой способ сделать это?

Ответы [ 4 ]

6 голосов
/ 09 октября 2011

Учитывая list из одноэлементных tuple с (назовем это l (для list)).Вы хотите объединить это в список элементов.

Понимание списка, извлечение первого элемента каждого кортежа сделает работу:

>>> l = [(280.73,), (281.359,), (280.630,)]
>>> [t[0] for t in l]
[280.73000000000002, 281.35899999999998, 280.63]
>>> 
5 голосов
/ 09 октября 2011

Самым простым, вероятно, является понимание списка:

cleaned = [i[0] for i in [(280.73,), (281.359,), (280.630,)]]
0 голосов
/ 22 мая 2012

Так же, как альтернативный хак, вы также можете сделать это:

>>> stuff = [(280.73,), (281.359,), (280.630,)]
>>> sum(stuff, ())
(280.73, 281.359, 280.63)

Чтобы преобразовать его в список, передайте его в функцию list:

>>> stuff = [(280.73,), (281.359,), (280.630,)]
>>> list(sum(stuff, ()))
[280.73, 281.359, 280.63]
0 голосов
/ 09 октября 2011

Эти примеры будут работать с произвольным количеством элементов кортежей.

>>> l = [(280.73,), (281.359,), (280.630,)]
>>> [ v for b in l for v in b ]
[280.73, 281.359, 280.63]
>>> from itertools import chain
>>> list(chain(*l))
[280.73, 281.359, 280.63]
>>> 
...