web-dev-qa-db-fra.com

Imprimer la liste sans crochets dans une seule ligne

J'ai une liste en Python Par exemple.

names = ["Sam", "Peter", "James", "Julian", "Ann"]

Je veux imprimer le tableau en une seule ligne sans le "[] normal

names = ["Sam", "Peter", "James", "Julian", "Ann"]
print (names)

Donnera la sortie comme;

["Sam", "Peter", "James", "Julian", "Ann"]

Ce n'est pas le format que je veux mais je veux que ce soit comme ça;

Sam, Peter, James, Julian, Ann

Remarque: il doit être sur une seule ligne.

109
Isuru
print(', '.join(names))

Ceci, comme cela semble être, prend juste tous les éléments de la liste et les joint avec ', '.

166
FatalError

Voici un simple. 

names = ["Sam", "Peter", "James", "Julian", "Ann"]
print(*names, sep=", ")

l'étoile décompresse la liste et renvoie chaque élément de la liste. 

50
Jianru Shi

Solution générale, fonctionne sur des tableaux de non-chaînes:

>>> print str(names)[1:-1]
'Sam', 'Peter', 'James', 'Julian', 'Ann'
34
Steve Bennett

Si le tableau en entrée est Type entier , vous devez d’abord convertir le tableau en string type array, puis utiliser la méthode join pour vous joindre à , ou espace comme vous voulez. par exemple:

>>> arr = [1, 2, 4, 3]
>>> print(", " . join(arr))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 0: expected string, int found
>>> sarr = [str(a) for a in arr]
>>> print(", " . join(sarr))
1, 2, 4, 3
>>>

L'utilisation directe de join qui joindra l'entier et la chaîne jettera l'erreur comme indiqué ci-dessus.

17
krishna Prasad

Il y a deux réponses, la première est d'utiliser le réglage 'sep'

>>> print(*names, sep = ', ')

L'autre est ci-dessous

>>> print(', '.join(names))
14
lyerox

C'est ce dont tu as besoin

", ".join(names)
9
user278064

Vous devez parcourir la liste en boucle et utiliser end=" " pour la conserver sur une seule ligne.

names = ["Sam", "Peter", "James", "Julian", "Ann"]
    index=0
    for name in names:
        print(names[index], end=", ")
        index += 1
3
Tofu Warrior

','.join(list) ne fonctionnera que si tous les éléments de la liste sont des chaînes. Si vous souhaitez convertir une liste de nombres en chaînes séparées par des virgules. tels que a = [1, 2, 3, 4] dans '1,2,3,4', vous pouvez soit

str(a)[1:-1] # '1, 2, 3, 4'

ou

str(a).lstrip('[').rstrip(']') # '1, 2, 3, 4'

bien que cela ne supprime aucune liste imbriquée.

Pour le reconvertir en liste

a = '1,2,3,4'
import ast
ast.literal_eval('['+a+']')
#[1, 2, 3, 4]
1
Vineeth Sai

Je ne sais pas si c'est efficace comme d'autres mais la logique simple fonctionne toujours:

import sys
name = ["Sam", "Peter", "James", "Julian", "Ann"]
for i in range(0, len(names)):
    sys.stdout.write(names[i])
    if i != len(names)-1:
        sys.stdout.write(", ")

Sortie:

Sam, Peter, James, Julian, Ann

0
Fredrick Gauss

La fonction suivante prendra une liste et renverra une chaîne d'éléments de la liste. Cela peut ensuite être utilisé à des fins de journalisation ou d'impression.

def listToString(inList):
    outString = ''
    if len(inList)==1:
        outString = outString+str(inList[0])
    if len(inList)>1:
        outString = outString+str(inList[0])
        for items in inList[1:]:
            outString = outString+', '+str(items)
    return outString
0
Rajesh Thennan