Chciałbym wiedzieć, czy istnieje lepszy sposób na wydrukowanie wszystkich obiektów na liście w Pythonie niż ten:
myList = [Person("Foo"), Person("Bar")]
print("\n".join(map(str, myList)))
Foo
Bar
Czytam w ten sposób, nie jest to dobre:
myList = [Person("Foo"), Person("Bar")]
for p in myList:
print(p)
Czy nie ma czegoś takiego:
print(p) for p in myList
Jeśli nie, moje pytanie brzmi ... dlaczego? Jeśli możemy zrobić tego rodzaju rzeczy z obszernymi listami, dlaczego nie jako proste oświadczenie poza listą?
python
list
printing
list-comprehension
Guillaume Voiron
źródło
źródło
for p in myList
było „niezbyt dobre”?Odpowiedzi:
Zakładając, że używasz Pythona 3.x:
Możesz uzyskać to samo zachowanie w Pythonie 2.x używając
from __future__ import print_function
, jak zauważył mgilson w komentarzach.Z instrukcją print w Pythonie 2.x będziesz potrzebować jakiejś iteracji, jeśli chodzi o pytanie o
print(p) for p in myList
niedziałanie, możesz po prostu użyć następującego, które robi to samo i nadal jest jedną linią:W przypadku rozwiązania, które używa
'\n'.join()
, wolę listy składane i generatory,map()
więc prawdopodobnie użyłbym następującego:źródło
from __future__ import print_function
na pythonie2.6 i nowszych.map()
generatorem a? Twórca Pythona również przedkłada rozumienia i generatorymap()
.[F(x) for x in S]
jest to bardziej jasne niżmap(F, S)
. Nie jest tam mowa o wydajności, ale spodziewałbym się, że różnica prędkości będzie znikoma. W każdym razie byłem zdezorientowany głosem przeciw, przepraszam, założyłem, że to ty!Używam tego cały czas:
źródło
format()
, zamień nastr(x)
ciąg formatu:print " ".join(["{:02d}".format(x) for x in l])
[print(a) for a in list]
poda na końcu kilka typów Brak, chociaż wypisuje wszystkie elementyźródło
W przypadku Pythona 2. *:
Jeśli przeciążasz funkcję __str __ () dla swojej klasy Person, możesz pominąć część z mapą (str, ...). Innym sposobem na to jest utworzenie funkcji, tak jak napisałeś:
W Pythonie 3. * jest argument sep dla funkcji print (). Zapoznaj się z dokumentacją.
źródło
Rozszerzanie odpowiedzi @ lucasg (inspirowane otrzymanym komentarzem):
Aby uzyskać sformatowaną listę wyjściową, możesz wykonać następujące czynności:
Teraz
", "
zapewnia separator (tylko między elementami, a nie na końcu), a ciąg formatujący w'02d'
połączeniu z%x
daje sformatowany ciąg dla każdego elementux
- w tym przypadku sformatowany jako liczba całkowita z dwiema cyframi, wypełniona po lewej stronie zerami.źródło
Aby wyświetlić każdą treść, używam:
Przykład użycia w funkcji:
Mam nadzieję, że pomogłem.
źródło
Myślę, że jest to najwygodniejsze, jeśli chcesz tylko zobaczyć zawartość na liście:
Prosty, łatwy do odczytania i może być używany razem z ciągiem formatującym.
źródło
Pytanie OP brzmi: czy istnieje coś takiego jak podążanie, jeśli nie, to dlaczego
odpowiedź brzmi, że istnieje, czyli:
Zasadniczo używaj
[]
do rozumienia listy i pozbądź się,print
aby uniknąć drukowaniaNone
. Aby zobaczyć, dlaczegoprint
wydrukiNone
widzą toźródło
Niedawno stworzyłem generator haseł i chociaż jestem BARDZO NOWY w Pythonie, dodałem to jako sposób na wyświetlenie wszystkich elementów na liście (z małymi zmianami, aby dopasować je do twoich potrzeb ...
Tak jak powiedziałem, jestem BARDZO NOWY w Pythonie i jestem pewien, że jest to niezgrabny sposób dla eksperta, ale jestem tutaj dla innego przykładu
źródło
Zakładając, że nic Ci nie jest z drukowaniem listy [1, 2, 3], prostym sposobem w Pythonie3 jest:
Uruchomienie tego daje następujący wynik:
źródło