Respostas:
Em Python 2:
mylist = ['x', 3, 'b']
print '[%s]' % ', '.join(map(str, mylist))
No Python 3 (onde print
é uma função embutida e não um recurso de sintaxe mais):
mylist = ['x', 3, 'b']
print('[%s]' % ', '.join(map(str, mylist)))
Ambos retornam:
[x, 3, b]
Isso usa a map()
função de chamar str para cada elemento de mylist , criando uma nova lista de strings que é então unida em uma string com str.join()
. Em seguida, o %
operador de formatação de string substitui a string em em vez de %s
em "[%s]"
.
map
função para chamar str
cada elemento de mylist
, criando uma nova lista de strings que ele então une em uma string str.join
. Em seguida, ele usa o %
operador de formatação de string para substituir a string em em vez de %s
em "[%s]"
.
"[{0}]".format(", ".join(str(i) for i in mylist))
map(f, xs)
(ou imap
em python2.x) sobre (f(x) for x in xs)
, quando f
é um chamável predefinido; que tende a executar menos bytecodes e geralmente é mais compacto. Certamente não map(lambda x:..., xs)
isso é muito pior do que(... for x in xs)
Este é um código simples, portanto, se você for novo, deve entendê-lo com bastante facilidade.
mylist = ["x", 3, "b"]
for items in mylist:
print(items)
Imprime todos sem aspas, como você desejava.
Se você estiver usando Python3:
print('[',end='');print(*L, sep=', ', end='');print(']')
print(end='['); print(*l, sep=', ', end=']\n')
Em vez de usar map
, eu recomendo usar uma expressão geradora com a capacidade de join
aceitar um iterador:
def get_nice_string(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
Aqui, join
está uma função-membro da classe string str
. Recebe um argumento: uma lista (ou iterador) de strings e retorna uma nova string com todos os elementos concatenados por, neste caso ,
,.
", ".join( str(x) for x in list_or_iterator).join('[]')
Você pode excluir todos os caracteres indesejados de uma string usando seu translate()
método com None
para o table
argumento seguido por uma string contendo o (s) caractere (s) que você deseja remover de seu deletechars
argumento.
lst = ['x', 3, 'b']
print str(lst).translate(None, "'")
# [x, 3, b]
Se estiver usando uma versão do Python anterior à 2.6, você precisará usar a função string
do módulo, translate()
porque a capacidade de passar None
como o table
argumento não foi adicionada até o Python 2.6. Usando a aparência:
import string
print string.translate(str(lst), None, "'")
Usar a string.translate()
função também funcionará no 2.6+, portanto, pode ser preferível usá-la.
lst = ["it isn't", 3, 'b']
==> ["it isnt", 3, b]
e também comlst = ['it isn\'t', 3, 'b']
Aqui está uma sessão interativa que mostra alguns dos passos do one-liner do @ TokenMacGuy. Primeiro, ele usa a map
função para converter cada item da lista em uma string (na verdade, ele está fazendo uma nova lista, não convertendo os itens da lista antiga). Então ele está usando o método string join
para combinar essas strings com', '
entre elas. O resto é apenas formatação de string, que é bastante simples. (Editar: esta instância é direta; a formatação de strings em geral pode ser um tanto complexa.)
Observe que usar join
é uma maneira simples e eficiente de construir uma string a partir de várias substrings, muito mais eficiente do que fazê-lo adicionando strings sucessivamente a strings, o que envolve muitas cópias nos bastidores.
>>> mylist = ['x', 3, 'b']
>>> m = map(str, mylist)
>>> m
['x', '3', 'b']
>>> j = ', '.join(m)
>>> j
'x, 3, b'
Usando .format
para formatação de string,
mylist = ['x', 3, 'b']
print("[{0}]".format(', '.join(map(str, mylist))))
Resultado:
[x, 3, b]
Explicação:
map
é usado para mapear cada elemento da lista para string
digitar.,
separador.[
e ]
na instrução print para mostrar as chaves da lista.Referência:
.format
para formatação de string PEP-3101
.format
a forma mais python. Mas, é claro, aceito divergências. ;)
Fui inspirado por @AniMenon para escrever uma solução pythônica mais geral.
mylist = ['x', 3, 'b']
print('[{}]'.format(', '.join(map('{}'.format, mylist))))
Ele apenas usa o format
método. Sem vestígios de str
, e permite o ajuste fino do formato dos elementos. Por exemplo, se você tiver números flutuantes como elementos da lista, você pode ajustar seu formato, adicionando um especificador de conversão, neste caso:.2f
mylist = [1.8493849, -6.329323, 4000.21222111]
print("[{}]".format(', '.join(map('{:.2f}'.format, mylist))))
O resultado é bastante decente:
[1.85, -6.33, 4000.21]
print(["Sam"])
chamarepr("Sam")
, que retorna'Sam'
(com as aspas), ao contrário de quando você chamaprint("Sam")
e chama pythonstr("Sam")
que retornaSam
(sem as aspas). Ver diferença entrestr
erepr
ou Pythonstr
elist
s para mais informações.