Jak inne odpowiedzi wspomniałem, pprint
jest doskonałym modułem, który zrobi to, co chcesz. Jeśli jednak nie chcesz go importować i chcesz wydrukować wynik debugowania podczas programowania, możesz uzyskać przybliżone wyniki.
Niektóre z pozostałych odpowiedzi działają poprawnie dla łańcuchów, ale jeśli wypróbujesz je za pomocą obiektu klasy, spowoduje to błąd TypeError: sequence item 0: expected string, instance found
.
Dla bardziej złożonych obiektów, upewnij się, że klasa ma __repr__
metodę, która drukuje informacje o właściwościach chcesz:
class Foo(object):
def __init__(self, bar):
self.bar = bar
def __repr__(self):
return "Foo - (%r)" % self.bar
a następnie, gdy chcesz wydrukować wyjście, wystarczy map swoją listę do funkcji str
tak:
l = [Foo(10), Foo(20), Foo("A string"), Foo(2.4)]
print "[%s]" % ",\n ".join(map(str,l))
wyjścia:
[Foo - (10),
Foo - (20),
Foo - ('A string'),
Foo - (2.4)]
Można też robić rzeczy, jak zastąpić metodę list
__repr__
aby uzyskać formę zagnieżdżonych ładnej druku:
class my_list(list):
def __repr__(self):
return "[%s]" % ",\n ".join(map(str, self))
a = my_list(["first", 2, my_list(["another", "list", "here"]), "last"])
print a
daje
[first,
2,
[another,
list,
here],
last]
niestety drugiego poziomu wcięcia ale do szybkiego debugowania to może się przydać.
Jak ładny drukować do pliku? – Mawg
Dlaczego po prostu nie użyć 'import pprint'? – clankill3r
@ clankill3r, musisz użyć 'pprint.pprint (the_list)' zazwyczaj jest to kwestia osobistych preferencji. W tym przypadku wybrałem dodatkowe miejsce w linii importu. –