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
7 réponses
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!
C'est ce Que join
est pour.
','.join([str(elem) for elem in a])
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
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"привет парни! я вам стихами, может быть, еще отвечу",", !"))
>>> 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'