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 %sem "[%s]".
mapfunção para chamar strcada 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 %sem "[%s]".
"[{0}]".format(", ".join(str(i) for i in mylist))
map(f, xs)(ou imapem 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 joinaceitar um iterador:
def get_nice_string(list_or_iterator):
return "[" + ", ".join( str(x) for x in list_or_iterator) + "]"
Aqui, joinestá 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 Nonepara o tableargumento seguido por uma string contendo o (s) caractere (s) que você deseja remover de seu deletecharsargumento.
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 stringdo módulo, translate()porque a capacidade de passar Nonecomo o tableargumento 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 mapfunçã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 joinpara 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 .formatpara 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 stringdigitar.,separador.[e ]na instrução print para mostrar as chaves da lista.Referência:
.formatpara formatação de string PEP-3101
.formata 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 formatmé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 entrestrereprou Pythonstrelists para mais informações.