Risposte:
In Python 2:
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
In Python 3 (dove printè una funzione incorporata e non più una funzionalità di sintassi):
mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))
Entrambi restituiscono:
[x, 3, b]
Questo sta usando la map()funzione per chiamare str per ogni elemento di mylist , creando un nuovo elenco di stringhe che viene poi unito in una stringa con str.join(). Quindi, l' %operatore di formattazione della stringa sostituisce la stringa in anziché %sin "[%s]".
mapfunzione per chiamare strogni elemento di mylist, creando un nuovo elenco di stringhe con cui poi si unisce in una stringa str.join. Quindi, utilizza l' %operatore di formattazione della stringa per sostituire la stringa in anziché %sin "[%s]".
"[{0}]".format(", ".join(str(i) for i in mylist))
map(f, xs)(o imapin python2.x) a (f(x) for x in xs)quando fè un chiamabile predefinito; che tende a eseguire meno bytecode e di solito è più compatto. Certamente non è map(lambda x:..., xs) molto peggio di(... for x in xs)
Questo è un codice semplice, quindi se sei nuovo dovresti capirlo abbastanza facilmente.
mylist = ["x", 3, "b"]
for items in mylist:
print(items)
Li stampa tutti senza virgolette, come volevi.
Se stai usando Python3:
print('[',end='');print(*L, sep=', ', end='');print(']')
print(end='['); print(*l, sep=', ', end=']\n')
Invece di utilizzare map, consiglierei di utilizzare un'espressione del generatore con la capacità di joinaccettare un iteratore:
def get_nice_string(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
Ecco joinuna funzione membro della classe string str. Richiede un argomento: un elenco (o iteratore) di stringhe, quindi restituisce una nuova stringa con tutti gli elementi concatenati da, in questo caso ,,.
", ".join( str(x) for x in list_or_iterator).join('[]')
È possibile eliminare tutti i caratteri indesiderati da una stringa utilizzando il suo translate()metodo con Nonecome tableargomento seguito da una stringa contenente i caratteri che si desidera rimuovere per il suo deletecharsargomento.
lst = ['x', 3, 'b']
print str(lst).translate(None, "'")
# [x, 3, b]
Se stai usando una versione di Python precedente alla 2.6, dovrai invece usare la funzione stringdel modulo translate()perché la possibilità di passare Nonecome tableargomento non è stata aggiunta fino a Python 2.6. Usandolo assomiglia a questo:
import string
print string.translate(str(lst), None, "'")
L'uso della string.translate()funzione funzionerà anche nella versione 2.6+, quindi potrebbe essere preferibile utilizzarla.
lst = ["it isn't", 3, 'b']==> ["it isnt", 3, b]e anche conlst = ['it isn\'t', 3, 'b']
Ecco una sessione interattiva che mostra alcuni passaggi nell'unica riga di @ TokenMacGuy. Per prima cosa usa la mapfunzione per convertire ogni elemento nell'elenco in una stringa (in realtà, sta creando un nuovo elenco, non convertendo gli elementi nel vecchio elenco). Quindi sta usando il metodo delle stringhe joinper combinare quelle stringhe ', 'tra di loro. Il resto è solo la formattazione delle stringhe, che è piuttosto semplice. (Modifica: questa istanza è semplice; la formattazione delle stringhe in generale può essere piuttosto complessa.)
Si noti che l'uso joinè un modo semplice ed efficiente per costruire una stringa da diverse sottostringhe, molto più efficiente rispetto a farlo aggiungendo successivamente stringhe alle stringhe, il che comporta molte copie dietro le quinte.
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
Usando .formatper la formattazione delle stringhe,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
Produzione:
[x, 3, b]
Spiegazione:
mapviene utilizzato per mappare ogni elemento dell'elenco al stringtipo.,separatore.[e ]nell'istruzione print per mostrare le parentesi graffe dell'elenco.Riferimento:
.formatper la formattazione delle stringhe PEP-3101
.formatil modo più pitonico. Ma, ovviamente, accetto i disaccordi. ;)
Sono stato ispirato da @AniMenon a scrivere una soluzione pitonica più generale.
mylist = ['x', 3, 'b']
print('[{}]'.format(', '.join(map('{}'.format, mylist))))
Utilizza solo il formatmetodo. Nessuna traccia stre consente la regolazione fine del formato degli elementi. Ad esempio, se hai numeri in virgola mobile come elementi dell'elenco, puoi regolare il loro formato, aggiungendo uno specificatore di conversione, in questo caso:.2f
mylist = [1.8493849, -6.329323, 4000.21222111]
print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))
L'output è abbastanza decente:
[1.85, -6.33, 4000.21]
print(["Sam"])chiamarepr("Sam"), che ritorna'Sam'(con le virgolette), a differenza di quando chiamiprint("Sam")e Python chiamastr("Sam")che ritornaSam(senza virgolette). Vedi la differenza trastrerepro Pythonstrelists per maggiori informazioni.