Python - преобразовать список кортежей в строку - PullRequest
16 голосов
/ 20 июля 2010

Какой самый питонный способ преобразовать список кортежей в строку?

У меня есть:

[(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]

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

Ответы [ 7 ]

32 голосов
/ 20 июля 2010

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

myList = [(1,2),(3,4)]
print ",".join("(%s,%s)" % tup for tup in myList)
# (1,2),(3,4)
24 голосов
/ 20 июля 2010

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

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

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

17 голосов
/ 20 июля 2010

Как насчет:

>>> tups = [(1, 2), (3, 4)]
>>> ', '.join(map(str, tups))
'(1, 2), (3, 4)'
1 голос
/ 06 июня 2018

Наиболее питонное решение -

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

tuple_strings = ['(%s, %s)' % tuple for tuple in tuples]

result = ', '.join(tuple_strings)
1 голос
/ 03 июля 2012

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

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

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

1 голос
/ 20 июля 2010

Как насчет

l = [(1, 2), (3, 4)]
print repr(l)[1:-1]
# (1, 2), (3, 4)
0 голосов
/ 20 августа 2010

Еще три:)

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)'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...