2016-11-03 2 views
-2

Я беру проект для университета! Программирование на python, мне нужно сделать функцию с именем generate_key, которая получает аргумент letters, который является кортежем из 25 символов. Функция должна возвращать кортеж из 5 кортежей символов, каждый из которых содержит 5 элементов, которые являются буквами, расположенными по строкам. Например:Кортежи кортежей в питоне, школьный проект

>>> letters = (‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, \ 
... ‘H’, ‘I’, ‘J’, ‘ ’, ‘L’, ‘M’, ‘N’, \ 
... ‘O’, ‘P’, ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, \ 
... ‘V’, ‘X’, ‘Z’, ‘.’) 

>>> generate_key(letters) 
... ((‘A’, ‘B’, ‘C’, ‘D’, ‘E’), 
... (‘F’, ‘G’, ‘H’, ‘I’, ‘J’), 
... (‘ ’, ‘L’, ‘M’, ‘N’, ‘O’), 
... (‘P’, ‘Q’, ‘R’, ‘S’, ‘T’), 
... (‘U’, ‘V’, ‘X’, ‘Z’, ‘.’)) 
+1

пожалуйста, предоставьте то, что вы пытались сделать в первую очередь –

+0

'[буквы [i: i + n] для i в диапазоне (0, len (буквы), n)]' – dawg

ответ

0

Вы можете использовать itertools.islice() для создания пользовательской функции итератора как:

from itertools import islice 

def chunk(my_iter, size): 
    my_iter = iter(it) 
    return iter(lambda: tuple(islice(my_iter, size)),()) 

Теперь использовать эту функцию, чтобы разделить список в пользовательский размер, как:

>>> import string # for getting all the alphabets 
>>> my_list = list(string.ascii_uppercase) + ['.'] 
# my_list holds the value: 
# ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '.'] 
>>> my_size = 5 
>>> list(chunk(my_list, my_size)) 
[('A', 'B', 'C', 'D', 'E'), ('F', 'G', 'H', 'I', 'J'), ('K', 'L', 'M', 'N', 'O'), ('P', 'Q', 'R', 'S', 'T'), ('U', 'V', 'W', 'X', 'Y'), ('Z', '.')] 
Смежные вопросы