Gostaria de saber se existe uma maneira melhor de imprimir todos os objetos em uma lista Python do que esta:
myList = [Person("Foo"), Person("Bar")]
print("\n".join(map(str, myList)))
Foo
Bar
Eu li que assim não é muito bom:
myList = [Person("Foo"), Person("Bar")]
for p in myList:
print(p)
Não existe algo como:
print(p) for p in myList
Se não, minha pergunta é ... por quê? Se podemos fazer esse tipo de coisa com listas abrangentes, por que não como uma simples declaração fora de uma lista?
python
list
printing
list-comprehension
Guillaume Voiron
fonte
fonte
for p in myList
"não era muito bom"?Respostas:
Supondo que você esteja usando Python 3.x:
Você pode obter o mesmo comportamento no Python 2.x usando
from __future__ import print_function
, conforme observado por mgilson nos comentários.Com a instrução print no Python 2.x, você precisará de algum tipo de iteração, em relação à sua pergunta sobre
print(p) for p in myList
não funcionar, você pode apenas usar o seguinte, que faz a mesma coisa e ainda é uma linha:Para uma solução que usa
'\n'.join()
, eu prefiro compreensões de lista e geradores,map()
então provavelmente usaria o seguinte:fonte
from __future__ import print_function
no python2.6 e mais recente.map()
e um gerador? O criador do Python também prefere compreensões e geradoresmap()
.[F(x) for x in S]
é mais claro do quemap(F, S)
. O desempenho não é abordado aqui, mas eu esperaria que a diferença de velocidade fosse insignificante. De qualquer forma, eu estava confuso sobre o downvote, desculpe, pensei que era você!Eu uso isso o tempo todo :
fonte
format()
, substituastr(x)
por uma string de formato:print " ".join(["{:02d}".format(x) for x in l])
[print(a) for a in list]
vai dar um monte de tipos Nenhum no final embora ele imprima todos os itensfonte
Para Python 2. *:
Se você sobrecarregar a função __str __ () para sua classe Person, você pode omitir a parte com map (str, ...). Outra maneira de fazer isso é criar uma função, assim como você escreveu:
Existe no Python 3. * o argumento sep para a função print (). Dê uma olhada na documentação.
fonte
Expandindo a resposta de @lucasg (inspirado no comentário que recebeu):
Para obter uma saída de lista formatada , você pode fazer algo ao longo destas linhas:
Agora o
", "
fornece o separador (apenas entre os itens, não no final) e a string de formatação'02d'
combinada com%x
fornece uma string formatada para cada itemx
- neste caso, formatado como um inteiro com dois dígitos, preenchido à esquerda com zeros.fonte
Para exibir cada conteúdo, eu uso:
Exemplo de uso em uma função:
Espero ter ajudado.
fonte
Acho que é o mais conveniente se você quiser apenas ver o conteúdo da lista:
Simples, fácil de ler e pode ser usado junto com a string de formato.
fonte
A pergunta da OP é: existe algo como o seguinte, se não, por que
a resposta é, ele existe, o que é:
Basicamente, use
[]
para compreensão da lista eprint
evite evitar a impressãoNone
. Para ver por que asprint
impressões,None
veja istofonte
Recentemente, fiz um gerador de senha e, embora eu seja MUITO NOVO no python, criei isso como uma forma de exibir todos os itens em uma lista (com pequenas edições para atender às suas necessidades ...
Como eu disse, sou MUITO NOVO em Python e tenho certeza de que é uma maneira desajeitada para um especialista, mas estou aqui apenas para outro exemplo
fonte
Supondo que você esteja bem com sua lista sendo impressa [1,2,3], uma maneira fácil em Python3 é:
Executá-lo produz a seguinte saída:
fonte