Imprimer la liste sans crochets sur une seule ligne

162

J'ai une liste en Python par exemple

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

Je veux imprimer le tableau sur 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 au lieu de cela, je veux que ce soit comme ça;

Sam, Peter, James, Julian, Ann

Remarque: il doit figurer sur une seule ligne.

Isuru
la source

Réponses:

242
print(', '.join(names))

Cela, comme cela en a l'air, prend juste tous les éléments de la liste et les joint ', '.

Erreur fatale
la source
10
Si certains éléments de namesne sont pas des chaînes, utilisez à la print(', '.join(map(str,name)))place.
Anonyme
78

En voici une simple.

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

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

Jianru Shi
la source
8
Dans python 2.7.6, c'est un SyntaxError: invalid syntax.
Fredrick Gauss
1
@FredrickGauss si vous ajoutez from __future__ import print_functioncela fonctionnera également en python 2.
Anthony Sottile
1
C'est la bonne réponse car elle fonctionne également avec des non-chaînes.
otocan
41

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

>>> print str(names)[1:-1]
'Sam', 'Peter', 'James', 'Julian', 'Ann'
Steve Bennett
la source
9
Cela ne répond pas à l'exigence énoncée. Notez l'exemple de l'OP montrant les noms résultants sans guillemets.
John Y
1
@SteveBennett pouvez-vous s'il vous plaît expliquer le découpage [1: -1] dans votre réponse. Je viens de commencer à apprendre python. Je vous remercie.
Charan
3
str(names)génère une chaîne comme ['Sam', 'Peter'...'Ann']. Nous ne voulons pas de crochets, donc coupez du 2ème caractère à l'avant-dernier caractère.
Steve Bennett
22

Si le tableau d'entrée est de type Integer, vous devez d'abord convertir le tableau en tableau de type chaîne , puis utiliser la joinméthode pour joindre ,ou espace ce que 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 la jointure qui joindra l'entier et la chaîne générera une erreur comme indiqué ci-dessus.

Krishna Prasad
la source
18

Il y a deux réponses, la première consiste à utiliser le paramètre 'sep'

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

L'autre est en dessous

>>> print(', '.join(names))
lyerox
la source
10

C'est ce dont tu as besoin

", ".join(names)
utilisateur278064
la source
1
Il enveloppe le résultat entre guillemets.
Fredrick Gauss
7

','.join(list)ne fonctionnera que si tous les éléments de la liste sont des chaînes. Si vous cherchez à convertir une liste de nombres en une chaîne séparée par des virgules. comme a = [1, 2, 3, 4]dans '1,2,3,4'alors 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]
Vineeth Sai
la source
4

Vous devez parcourir la liste et l'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
Guerrier Tofu
la source
OP dit qu'il doit être sur une seule ligne.
Ali
2

imprimer (* noms)

cela fonctionnera dans python 3 si vous voulez qu'ils soient imprimés comme des espaces séparés. Si vous avez besoin d'une virgule ou de quoi que ce soit d'autre, allez-y avec la solution .join ()

ppmakeitcount
la source
1

Je ne sais pas si c'est efficace comme les 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(", ")

Production:

Sam, Peter, James, Julian, Ann

Fredrick Gauss
la source
0

La fonction suivante prendra dans une liste et retournera une chaîne des éléments des listes. 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
Rajesh Thennan
la source
0

Pour un tableau de type entier, nous devons d'abord le changer en type chaîne et ensuite utiliser la fonction de jointure pour obtenir une sortie propre sans crochets.

    arr = [1, 2, 3, 4, 5]    
    print(', '.join(map(str, arr)))

SORTIE - 1, 2, 3, 4, 5

Pour un tableau de type chaîne, nous devons utiliser la fonction de jointure directement pour obtenir une sortie propre sans crochets.

    arr = ["Ram", "Mohan", "Shyam", "Dilip", "Sohan"]
    print(', '.join(arr)

SORTIE - Ram, Mohan, Shyam, Dilip, Sohan

Martin
la source