2015-06-18 3 views
0

У меня есть список слов, т.е. [ cat, dog, bird, horse, pig, duck, frog, chicken, sheep, cow] Я хочу печати сказать девять из них в сетке, как это:Печать сетки из списка без п показывает

cat dog horse 

bird pig duck 

frog chicken sheep 

есть в любом случае делать это? Кроме того, когда я их распечатать oÀ линию я получаю \ п разрыв строки в конце каждого пункта, который так раздражает - есть простое исправление для этой

+2

http://stackoverflow.com/questions/30870328/how-do-you-put-words-into- a-3x3-grid-using-python/30870561 –

+0

Возможный дубликат [Использование текстового файла для размещения слов в форме сетки] (http://stackoverflow.com/questions/23023403/using-a-text-file -to-lay-out-a-words-into-grid-form) – Delimitry

+0

Есть ли какой-либо журнал ic за вашим выходом? и вы сами что-то пробовали? – Kasramvd

ответ

2

Как это:

li = [ 
    'cat', 'dog', 'bird', 
    'horse', 'pig', 'duck', 
    'frog', 'chicken', 'sheep', 
    'cow' 
] 

lines = [" ".join(li[x:x+3]) for x in xrange(0, len(li), 3)] 
for line in lines: 
    print line 
0

Я предполагаю, что это строки? В этом случае вы можете использовать цикл for и печатать всю строку за вычетом символов \ n, например, как cat [: - 2].

0

Вы можете сделать это, найдя самое длинное слово (имя животного) и используя эту длину в качестве дополнения между словами. Ниже будет разделять строки в группы 3. Любых Напомнив элементы после раскола будет игнорироваться:

animals = ['cat', 'dog', 'bird', 'horse', 'pig', 'duck', 'frog', 'chicken', 'sheep', 'cow'] 
padding = max(map(len, animals)) + 2 
groups = zip(*(iter(animals),) * 3) 

for group in groups: 
    print("".join(("{:%i}" % padding).format(a) for a in group)) 
0

Вы можете перемещаться по списку с шагом, который является количеством слов в строку.

Затем я выбираю часть списка, которую я хочу, с диапазоном [start:end], и печатаю с использованием join(), который объединит все элементы в списке с выбранной строкой между ними.

Затем я перехожу к следующей части списка.

words = ['a','b','c','d','e','f','g','h','i','j'] 

def printNum(n, lst): 
    start = 0 
    end = start + n 
    for line in lst[::n]: 
     print "\t".join(lst[start:end]) 
     start = end 
     end = start + n 
print "3 words per line:" 
printNum(3, words) 

print "2 words per line:" 
printNum(2, words) 

Выход:

3 words per line: 
a  b  c 
d  e  f 
g  h  i 
j 

2 words per line: 
a  b 
c  d 
e  f 
g  h 
i  j 
+0

, который работает, я еще не знаю, но это –

+0

Знаете ли вы, почему, когда вы читаете текстовый файл в списке в python, он добавляет \ n в конце каждого элемента. Это делает невозможным поиск элемента, например, cat, потому что теперь он cat \ n –

+0

Вы можете использовать 'strip()' для удаления всех специальных символов из начала и конца строки. – ThePavolC

0

еще одно решение:

WORDS = ['one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten'] 

# how much words to print out in a table 
word_count = 9 
# number of words in a row 
row_length = 3 

words = WORDS[:word_count] 
max_word_length = max(len(x) for x in words) 

for index, word in enumerate(words): 
    word = "{0:>{1}}".format(word, max_word_length + 1) 
    if (index + 1) % row_length: 
     print word, 
    else: 
     print word