web-dev-qa-db-fra.com

Python, liste délimitée par l'impression

Considérez ceci Python code 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 l'impression de sorte qu'une virgule n'apparaisse pas si element est le dernier élément de la liste.

ex

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

output
1,2,3,
desired
1,2,3
35
Mike
>>> ','.join(map(str,a))
'1,2,3'
92
ghostdog74

Un ','.join Comme suggéré dans d'autres réponses est la solution typique Python; l'approche normale, que je ne vois pas particulièrement dans aucune des réponses jusqu'à présent, est

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

connu comme une expression de générateur 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 également d'excellentes alternatives:

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

c'est un premier commutateur (fonctionne pour tout a itérable, qu'il s'agisse d'une liste ou autre), il place donc la virgule avant chaque élément sauf le premier. Un dernier interrupteur est un peu moins élégant et ne fonctionne que pour les itérables qui ont une len() (pas pour les 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ée énumérer est très souvent utile et mérite d'être gardée à l'esprit!

13
Alex Martelli

Il y a deux options,

Vous pouvez imprimer directement la réponse en utilisant print(*a, sep=',') ceci utilisera le séparateur 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 parcourir la liste et imprimer le (a) et imprimer la sortie comme

1,2,3
2
Midhunlal

C'est à cela que sert join .

','.join([str(elem) for elem in a])
2
MatrixFrog
print ','.join(a)