Python, Imprimer la liste délimitée

Considérez ce code Python pour imprimer une liste de valeurs séparées par des virgules

for element in list:
    print element + ",",

Quelle est la méthode préférée pour imprimer de telle sorte qu'une virgule n'apparaisse pas si element est l'élément final de la liste.

Ex

a = [1, 2, 3]
for element in a
  print str(element) +",",

output
1,2,3,
desired
1,2,3
33
demandé sur mjv 2010-03-08 06:25:03

7 réponses

>>> ','.join(map(str,a))
'1,2,3'
84
répondu ghostdog74 2010-03-08 03:27:18

A {[3] } comme suggéré dans d'autres réponses est la solution Python typique; l'approche normale, que je ne vois pas dans l'une des réponses jusqu'à présent, est

print ','.join(str(x) for x in a)

Connu sous le nom d'expression génératrice ou genexp.

Si vous préférez une boucle (ou en avez besoin à d'autres fins, Si vous faites plus que simplement imprimer sur chaque élément, par exemple), il existe bien sûr d'excellentes alternatives:

for i, x in enumerate(a):
  if i: print ',' + str(x),
  else: print str(x),

C'est un commutateur pour la première fois (Fonctionne pour tout a itérable, qu'il s'agisse d'une liste ou sinon) donc il place la virgule avant chaque élément sauf le premier. Un commutateur de dernière heure est légèrement moins élégant et ne fonctionne que pour les itérables qui ont un len() (pas pour ceux complètement généraux):

for i, x in enumerate(a):
  if i == len(a) - 1: print str(x)
  else: print str(x) + ',',

Cet exemple tire également parti du dernier commutateur pour terminer la ligne lors de l'impression du tout dernier élément.

La fonction intégréeenumerate est très souvent utile, et mérite d'être gardée à l'esprit!

13
répondu Alex Martelli 2010-03-08 03:42:18

C'est ce Que join est pour.

','.join([str(elem) for elem in a])
2
répondu MatrixFrog 2010-03-08 03:47:32

Il y a deux options ,

Vous pouvez directement Imprimer la réponse en utilisant print(*a, sep=',') cela utilisera separator comme", " vous obtiendrez la réponse comme,

1,2,3

Et une autre option est ,

print(','.join(str(x) for x in list(a)))

Cela va itérer la liste et imprimer le (a) et imprimer la sortie comme

1,2,3
2
répondu Midhunlal 2017-10-06 16:16:02
print ','.join(a)
0
répondu Ignacio Vazquez-Abrams 2010-03-08 03:26:42
 def stringTokenizer(sentense,delimiters):
     list=[]
     word=""
     isInWord=False
     for ch in sentense:
         if ch in delimiters:
             if isInWord: # start ow word
                 print(word)
                 list.append(word)
                 isInWord=False
         else:
             if not isInWord: # end of word
                 word=""
                 isInWord=True
             word=word+ch
     if isInWord: #  end of word at end of sentence
             print(word)
             list.append(word)
             isInWord=False
     return list

Imprimer (stringTokenizer (u"привет парни! я вам стихами, может быть, еще отвечу",", !"))

-1
répondu veaceslav.kunitki 2017-10-27 15:01:10
>>> a=[1,2,3]
>>> a=[str(i) for i in a ]
>>> s=a[0]
>>> for i in a[1:-1]: s="%s,%s"%(s,i)
...
>>> s=s+","+a[-1]
>>> s
'1,2,3'
-3
répondu ghostdog74 2010-03-08 05:15:51