2012-08-23 13 views
8

Załóżmy, że mam tych dwóch list:Loop wydrukować w dwóch listach, aby uzyskać dwie kolumny ze stałym (custom set) przestrzeń pomiędzy pierwszą literę każdego elementu każdej listy

column1 = ["soft","pregnant","tall"] 
column2 = ["skin","woman", "man"] 

Jak mogę pętla drukować przez nich dwie listy przy użyciu niestandardowej, stałej przestrzeni (powiedzmy 10, jak w przykładzie), poczynając od pierwszej litery każdego elementu pierwszej listy, aż do pierwszej litery każdego elementu z drugiej listy?

Przykład wyjściowy z odstępem ustalonym z 10:

soft  skin 
pregnant woman 
tall  man 
+2

zip http://docs.python.org/library/functions.html#zip – bpgergo

Odpowiedz

8

łatwo wykonane z string formatting,

column1 = ["soft","pregnant","tall"] 
column2 = ["skin","woman", "man"] 

for c1, c2 in zip(column1, column2): 
    print "%-9s %s" % (c1, c2) 

Albo można użyć str.ljust, który jest porządniej jeśli chcesz mieć padding być oparte na zmiennej:

padding = 9 
for c1, c2 in zip(column1, column2): 
    print "%s %s" % (c1.ljust(padding), c2) 

(uwaga: wyściółka jest 9 zamiast 10 powodu zakodowanej przestrzeni między słowami)

+0

Jak napisano, oba te rozwiązania będą miały trzy spacje, a nie dwa, pomiędzy "t" "w ciąży" a "w" "kobiety". Możesz usunąć przestrzeń w wydrukowanym ciągu, jak sądzę. – DSM

+0

Załóżmy, że elementy drugiej kolumny będą zawierały ciągi dłuższe niż szerokość mojego ekranu terminala. Domyślne zachowanie polega na tym, że te łańcuchy "przeleją się" nad moją pierwszą kolumną. W jaki sposób pozwolić, aby każdy taki długi ciąg był kontynuowany od punktu początkowego drugiej kolumny? – Bentley4

+0

@ DS True, zmniejszając wielkość dopełnienia o jeden, będzie dokładnie odpowiadać oczekiwanemu wynikowi. Usunięcie spacji między '% s' może spowodować, że słowa zostaną przeciągnięte razem. Edytowana odpowiedź – dbr

3
column1 = ["soft","pregnant","tall"] 
column2 = ["skin","woman", "man"] 

for row in zip(column1, column2): 
    print "%-9s %s" % row # formatted to a width of 9 with one extra space after 
4

Jak o:

>>> column1 = ["soft","pregnant","tall"] 
>>> column2 = ["skin","woman", "man"] 
>>> for line in zip(column1, column2): 
...  print '{:10}{}'.format(*line) 
... 
soft  skin 
pregnant woman 
tall  man 
0

One liner stosując nowy styl formatowania ciąg:

>>> column1 = ["soft", "pregnant", "tall"] 
>>> column2 = ["skin", "woman", "man"] 

>>> print "\n".join("{0}\t{1}".format(a, b) for a, b in zip(column1, column2)) 

soft  skin 
pregnant woman 
tall  man 
0

Korzystanie Python 3

column1 = ["soft","pregnant","tall"] 
column2 = ["skin","woman", "man"] 

for line in zip(column1, column2): 
    print('{:10}{}'.format(*line))