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.

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 ', '.


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.


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'

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.


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))


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]

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

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 ()


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


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

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.