Какой самый питонный способ преобразовать список кортежей в строку?
У меня есть:
[(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]
Есть ли более питонический способ сделать это?
Вы можете попробовать что-то вроде этого ( см. Также на ideone.com ):
myList = [(1,2),(3,4)] print ",".join("(%s,%s)" % tup for tup in myList) # (1,2),(3,4)
Вы можете использовать что-то такое простое, как:
>>> l = [(1,2), (3,4)] >>> str(l).strip('[]') '(1, 2), (3, 4)'
.., что удобно, но не гарантирует правильной работы
Как насчет:
>>> tups = [(1, 2), (3, 4)] >>> ', '.join(map(str, tups)) '(1, 2), (3, 4)'
Наиболее питонное решение -
tuples = [(1, 2), (3, 4)] tuple_strings = ['(%s, %s)' % tuple for tuple in tuples] result = ', '.join(tuple_strings)
Я думаю, что это довольно опрятно:
>>> l = [(1,2), (3,4)] >>> "".join(str(l)).strip('[]') '(1,2), (3,4)'
Попробуйте, это сработало для меня как шарм.
Как насчет
l = [(1, 2), (3, 4)] print repr(l)[1:-1] # (1, 2), (3, 4)
Еще три:)
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)'