Stampa l'elenco senza parentesi in una singola riga


162

Ho un elenco in Python ad es

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

Voglio stampare l'array su una sola riga senza il normale "[]

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

Fornirà l'output come;

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

Questo non è il formato che voglio, invece voglio che sia così;

Sam, Peter, James, Julian, Ann

Nota: deve essere in una singola riga.

Risposte:


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

Questo, come sembra, prende solo tutti gli elementi dell'elenco e li unisce ', '.


10
Se alcuni elementi namesnon sono stringhe, utilizzare print(', '.join(map(str,name)))invece.
Anonimo

78

Eccone uno semplice.

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

la stella decomprime l'elenco e restituisce tutti gli elementi dell'elenco.


8
In python 2.7.6, Questo è un SyntaxError: invalid syntax.
Fredrick Gauss,

1
@FredrickGauss se lo aggiungi from __future__ import print_functionfunzionerà anche in Python 2.
Anthony Sottile,

1
Questa è la risposta corretta poiché funziona anche con non stringhe.
otocan,

41

Soluzione generale, funziona su matrici di non stringhe:

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

9
Questo non soddisfa i requisiti dichiarati. Si noti l'esempio dell'OP che mostra i nomi risultanti senza virgolette.
John Y,

1
@SteveBennett puoi per favore spiegare l'affettamento [1: -1] nella tua risposta. Ho appena iniziato a studiare Python. Grazie.
Charan,

3
str(names)genera una stringa come ['Sam', 'Peter'...'Ann']. Non vogliamo le parentesi quadre, quindi taglia dal 2o carattere al penultimo carattere.
Steve Bennett,

22

Se l'array di input è di tipo Integer, è necessario prima convertire l'array in array di tipo stringa e quindi utilizzare il joinmetodo per unire ,o spaziare ciò che si desidera. per esempio:

>>> 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'uso diretto di join che unirà il numero intero e la stringa genererà un errore come mostrato sopra.


18

Ci sono due risposte, la prima è usare l'impostazione 'sep'

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

L'altro è sotto

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


7

','.join(list)funzionerà solo se tutti gli elementi nell'elenco sono stringhe. Se stai cercando di convertire un elenco di numeri in una stringa separata da virgola. come a = [1, 2, 3, 4]in '1,2,3,4'allora puoi farlo

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

o

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

sebbene ciò non rimuoverà alcun elenco nidificato.

Per riconvertirlo in un elenco

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

4

È necessario scorrere l'elenco e utilizzarlo end=" "per mantenerlo su una riga

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

OP dice che deve essere in una sola riga.
Ali,

2

stampare (* nomi)

questo funzionerà in Python 3 se vuoi che vengano stampati come spazi separati. Se hai bisogno di virgola o qualsiasi altra via di mezzo, vai avanti con la soluzione .join ()


1

Non so se questo sia efficiente come gli altri, ma la logica semplice funziona sempre:

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

Produzione:

Sam, Peter, James, Julian, Ann


0

La seguente funzione prenderà un elenco e restituirà una stringa degli elementi degli elenchi. Questo può quindi essere utilizzato per scopi di registrazione o stampa.

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

Per array di tipo intero, dobbiamo prima cambiarlo in tipo stringa e quindi utilizzare la funzione join per ottenere un output pulito senza parentesi.

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

USCITA - 1, 2, 3, 4, 5

Per array di tipo stringa, è necessario utilizzare direttamente la funzione join per ottenere un output pulito senza parentesi.

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

OUTPUT - Ram, Mohan, Shyam, Dilip, Sohan

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.