Python - преобразовать список кортежей в строку

Каков наиболее pythonic способ преобразования списка кортежей в строку?

У меня есть:

[(1,2), (3,4)]

и я хочу:

"(1,2), (3,4)"

Мое решение для этого было:

l=[(1,2),(3,4)]
s=""
for t in l:
    s += "(%s,%s)," % t
s = s[:-1]

Есть ли более питонический способ сделать это?

Ответы

Ответ 1

вы можете использовать что-то такое простое:

>>> l = [(1,2), (3,4)]
>>> str(l).strip('[]')
'(1, 2), (3, 4)'

.., который удобен, но не гарантированно работает правильно

Ответ 2

Вы можете попробовать что-то вроде этого (см. также на ideone.com):

myList = [(1,2),(3,4)]
print ",".join("(%s,%s)" % tup for tup in myList)
# (1,2),(3,4)

Ответ 3

Как насчет:

>>> tups = [(1, 2), (3, 4)]
>>> ', '.join(map(str, tups))
'(1, 2), (3, 4)'

Ответ 4

Как насчет

l = [(1, 2), (3, 4)]
print repr(l)[1:-1]
# (1, 2), (3, 4)

Ответ 5

Я думаю, что это довольно аккуратно:

>>> l = [(1,2), (3,4)]
>>> "".join(str(l)).strip('[]')
'(1,2), (3,4)'

Попробуй, это сработало как прелесть для меня.

Ответ 6

Еще три:)

l = [(1,2), (3,4)]

unicode(l)[1:-1]
# u'(1, 2), (3, 4)'

("%s, "*len(l) % tuple(l))[:-2]
# '(1, 2), (3, 4)'

", ".join(["%s"]*len(l)) % tuple(l)
# '(1, 2), (3, 4)'