Quel est le moyen le plus pythonique de convertir une liste de tuples en chaîne?
J'ai:
[(1,2), (3,4)]
et je veux:
"(1,2), (3,4)"
Ma solution à cela a été:
l=[(1,2),(3,4)]
s=""
for t in l:
s += "(%s,%s)," % t
s = s[:-1]
Y a-t-il une façon plus pythonique de faire cela?
vous voudrez peut-être utiliser quelque chose de tel aussi simple que:
>>> l = [(1,2), (3,4)]
>>> str(l).strip('[]')
'(1, 2), (3, 4)'
.. qui est pratique, mais pas garanti de fonctionner correctement
Vous pouvez essayer quelque chose comme ça ( voir aussi sur ideone.com ):
myList = [(1,2),(3,4)]
print ",".join("(%s,%s)" % tup for tup in myList)
# (1,2),(3,4)
Que diriez-vous:
>>> tups = [(1, 2), (3, 4)]
>>> ', '.join(map(str, tups))
'(1, 2), (3, 4)'
La solution la plus pythonique est
tuples = [(1, 2), (3, 4)]
Tuple_strings = ['(%s, %s)' % Tuple for Tuple in tuples]
result = ', '.join(Tuple_strings)
Je pense que c'est assez soigné:
>>> l = [(1,2), (3,4)]
>>> "".join(str(l)).strip('[]')
'(1,2), (3,4)'
Essayez-le, ça a fonctionné comme un charme pour moi.
Que diriez-vous
l = [(1, 2), (3, 4)]
print repr(l)[1:-1]
# (1, 2), (3, 4)
Trois de plus :)
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)'