Как я могу отформатировать список python для печати?

Пример у меня есть:

list = ['Name1 ', Price1, Piece1, 'Name2 ', Price2, Piece2, 'Name3', Price3,
        Piece3]

И я хочу отформатировать список, чтобы он печатался так:

Name1
Price1 - Piece1
Name2
Price2 - Piece2
Name3
Price3 - Piece3
-1
user3740961 6 Янв 2017 в 16:58

7 ответов

Лучший ответ

Еще одно уродливое решение:

print("\n".join([lst[i] + "\n" + lst[i+1] + " - " + lst[i+2] for i in range(0, len(lst), 3)]))
1
Robin Koch 6 Янв 2017 в 14:06
print(*['{}\n{} - {}'.format(*lst[i:i + 3]) for i in range(0, len(lst), 3)], sep='\n')
1
ADR 6 Янв 2017 в 14:14
for i in range(0, len(seq), 3):
    name, price, piece = seq[i:i+3]

Тогда делай что хочешь с кусочками.

1
Alex Hall 6 Янв 2017 в 14:08

Если вы считаете, что Price1 и Price2 являются строками (вы забыли знак ')

Одно из решений:

lst = ['Name1 ', 'Price1', 'Piece1', 'Name2 ', 'Price2', 'Piece2', 'Name3', 'Price3', 'Piece3']

for i in xrange(0, len(lst), 3):
    print(lst[i] + "\n" + lst[i+1] + " - " + lst[i+2])

Возвращает:

Name1 
Price1 - Piece1
Name2 
Price2 - Piece2
Name3
Price3 - Piece3

Также никогда не называйте вашу переменную list список - это уже используемое ключевое слово в python

2
Gábor Erdős 6 Янв 2017 в 19:14
ls = ['Name1 ', 'Price1', 'Piece1', 'Name2 ', 'Price2', 'Piece2', 'Name3', 'Price3', 'Piece3']

for i in range(0, len(ls), 3):
    print(*( ls[i:i + 3]))
0
Inconnu 6 Янв 2017 в 14:15

Что бы я сделал, это

#Declare some variables for example
Price1 , Price2 , Price3 = 12 , 57 , 33
Piece1 , Piece2 , Piece3 = 5 , 4 , 2

#Create a two-dimensional array for more clear code
li = [['Name1', Price1 , Piece1] , ['Name2 ', Price2, Piece2] , ['Name3', Price3, Piece3]]

#Itterate through the array and print 
for i in range(len(li)) :
    print "\n"
    for y in range(len(li[i])) :
        if y == 0 :
            print li[i][0] 
        else:
            print li[i][1] , " , " , li[i][2] 

Конечно, это может быть лучше и эффективнее. Я надеюсь, что помог вам, если у вас есть какие-либо вопросы, не стесняйтесь задавать.

0
Orbit'IO 6 Янв 2017 в 16:14
list0 = ['Name1 ', 1, 2, 'Name2 ', 1, 2, 'Name3', 2, 1]
print '\n'.join(['{}\n{}-{}'.format(x,y,z) for (x,y,z) in zip(list0[::3],list0[1::3],list0[2::3])])

Выходы

Name1 
1-2
Name2 
1-2
Name3
2-1
0
JMat 6 Янв 2017 в 14:07