Найти - Пользователи
Полная версия: Вывод for
Начало » Python для новичков » Вывод for
1
sumrak_ss
Подскажите как изменить цикл:

for i in range(len(list_2)):
print "%s %-16s x%d" % (list_1[i], list_2[i], list_3[i])

что бы его вывод был в несколько столбцов, например не более 5 строк?
#
[a] Альфа x0 [f] Дзета x0 [k] Лямда x0
[b] Бета x0 [g] Эта x0 [l] Мю x0
[c] Гамма x0 [h] Тета x0 и т.д.
[d] Дэльта x0 [i] Йота x0
[e] Эпсилон x0 [j] Каппа x0
o7412369815963
sumrak_ss
Подскажите как изменить цикл:
можно типа такого:
# coding: utf8

l = [ ['[a]',u'Альфа',0], ['[b]',u'Дзета',0], ['[c]',u'Бета',0], ['[d]',u'Гамма',0],
['[e]',u'Дэльта',0], ['[f]',u'Эпсилон',0], ['[q]',u'0Альфа',0], ['[w]',u'1Альфа',0],
['[e]',u'2Альфа',0], ['[r]',u'3Альфа',0], ['[t]',u'4Альфа',0], ['[y]',u'5Альфа',0],
['[u]',u'6Альфа',0], ['[i]',u'7Альфа',0], ['[o]',u'8Альфа',0], ['[p]',u'9Альфа',0],
['[l]',u'0Альфа',0], ['[k]',u'-Альфа',0], ['[j]',u'*Альфа',0], ]

col = 4
for j in xrange(col):
for i in l[j::col]:
print "%s %-10s x%d" % tuple(i),
print
результат:
[a] Альфа      x0 [e] Дэльта     x0 [e] 2Альфа     x0 [u] 6Альфа     x0 [l] 0Альфа     x0
[b] Дзета x0 [f] Эпсилон x0 [r] 3Альфа x0 [i] 7Альфа x0 [k] -Альфа x0
[c] Бета x0 [q] 0Альфа x0 [t] 4Альфа x0 [o] 8Альфа x0 [j] *Альфа x0
[d] Гамма x0 [w] 1Альфа x0 [y] 5Альфа x0 [p] 9Альфа x0
sumrak_ss
В принципе подходит, спасибо! А возможен вариант без создания списка l = ?
o7412369815963
sumrak_ss
В принципе подходит, спасибо! А возможен вариант без создания списка l = ?
можно, а можно и зипнуть:
# coding: utf-8

list_1 = ['a','b','c']
list_2 = ['one','two','three']
list_3 = [1,2,3]

print zip(list_1,list_2,list_3)
pasaranax
что-то многовато кода у меня вышло…
#from itertools import izip_longest
import sys
list_1 = ['[a]', '[b]', '[c]', '[d]', '[e]', '[f]', '[g]', '[h]', '[i]', '[j]',
'[k]', '[l]']
list_2 = [u'Альфа', u'Бета', u'Гамма', u'Дельта', u'Эпсилон', u'Дзета', u'Эта',
u'Тета', u'Йота', u'Каппа', u'Лямда', u'Мю']
list_3 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]

# сначала скучкуем и разделим по 5 штук
lines = 5
l = []
for n, i in enumerate(zip(list_1, list_2, list_3)):
if n % lines == 0:
l.append([])
l[-1].append(i)

# потом транспонируем
lt = list(izip_longest(*l))

# и выводим в нужном формате
for i in lt:
for j in [c for c in i if c]:
sys.stdout.write("%s %-16s x%d " % tuple(j))
# в 3 питоне лучше через принт:
#print("%s %-16s x%d " % tuple(j), end="")
print
sumrak_ss
pasaranax, выдает это:

UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 4-8: ordin
al not in range(128)

как исправить?
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB