2013-05-21 2 views
4

Если я имел три списка, такие какПечать списков на столах в питона

a = [1, 2, 3] 
b = [4, 5, 6] 
c = [7, 8, 9] 

И хотел напечатать его, как это

1 4 7 
2 5 8 
3 6 9 

Как бы я сделать это?

+0

meaby дублированный HTTP : //stackoverflow.com/questions/13214809/pretty-print-2d-python-list, http://stackoverflow.com/questions/9712085/numpy-pretty-print-tabular-data, http: // st ackoverflow.com/questions/5909873/python-pretty-printing-ascii-tables – gustavodiazjaimes

ответ

6

Это следует сделать это:

'\n'.join(' '.join(map(str,tup)) for tup in zip(a,b,c)) 
+3

+1, если по какой-либо другой причине, чем вы ответили на это через 36 секунд. – John

+1

Я думаю, вы хотите '' '', потому что OP имеет два пробела между столбцами. Или оставьте его как '' ''и сделайте' str (x) .ljust (2) 'вместо' str'. – abarnert

+0

Удерживайте, это неправильно ... OP пытается распечатать списки, транспонированные. – abarnert

8

Твердая часть этого транспонировать массив. Но это легко, с zip:

a = [1, 2, 3] 
b = [4, 5, 6] 
c = [7, 8, 9] 
t = zip(a, b, c) 

Теперь вы просто распечатать его:

print('\n'.join(' '.join(map(str, row)) for row in t)) 
+2

IMHO, очень читаемое решение. Мне нравится держать zip отдельно (в отличие от других ответов), потому что транспонирование и отображение - это принципиально разные вещи. –

2

С список понимания выражения генератора без функции отображения:

'\n'.join(' '.join(str(y) for y in x) for x in zip(a,b,c)) 
+0

Во-первых, в тех случаях, когда все, что вы делаете, отображает хорошо названную функцию, которую вы уже имеете, почему бы не использовать 'map'? Да, это менее читаемо, когда вам нужно построить «лямбда» или «частичный», но в этом случае я думаю, что это более читаемо. (Кроме того, у вас нет понимания списка здесь, у вас есть выражение генератора.) – abarnert

+0

Это именно то, что я искал. благодаря! – Outpost67

+0

@abarnert: вы просто сами ответили на свой вопрос: карта без необходимости создает список, который не создается, потому что я использую выражение генератора (извините за ошибочное название, отредактированное). Генератор чище, чем список. Я также должен использовать функциональный эквивалент zip, поэтому добавьте 'from itertools import izip как zip' в начало скрипта. – pvoosten

Смежные вопросы