2016-03-07 2 views
0

Я пытаюсь группировать список self.L в группы по пять, а затем обратный как отдельные группы Я хочу, чтобы мой выход выглядеть следующим образомГруппировка вместе список в Python

step1.(group the list into two section of five) 

    [[1,3,5,67,8],[90,100,45,67,865]] 

    step2.(reverse the numbers within the two groups) 

    [[8,67,5,3,1],[865,67,45,100,90]] 

код, который я есть

 class Flip(): 
    def __init__(self,answer): 
     self.Answer = answer 
     self.matrix = None 
     self.L = [1,3,5,67,8,90,100,45,67,865,] 


    def flip(self): 
     if self.Answer == 'h': 
      def grouping(self): 
       for i in range(0, len(self.L), 5): 
        self.matrix.append(self.L[i:i+5]) 
      print(self.matrix) 

if __name__ =='__main__': 
    ans = input("Type h for horizontal flip") 
    work = Flip(ans) 
    work.flip() 

Когда я запускаю код мой выход

None 
+2

Пожалуйста, отредактируйте свой вопрос и исправьте сначала отступ. – Selcuk

+0

Да, пожалуйста, пересмотрите свой код и убедитесь, что он структурирован надлежащим образом. Кроме того, установка 'self.matrix = None' будет давать вам проблемы на основе того, как вы ее используете. Кажется, вы хотите использовать это как список, поэтому просто инициализируйте его как один: 'self.matrix = []' – idjaw

+0

Вы определяете функцию 'группировка' внутри метода' flip' (закрытие), но 1/вы не 't называть 'grouping()', и вы не возвращаете никакого результата из 'grouping'. Таким образом, вы просто печатаете еще пустую матрицу. – Evert

ответ

1

Для создания вложенных списков с 5 элементов в каждом из них, вы можете использовать list comprehension:

lst = [1,3,5,67,8,90,100,45,67,865] 
new_list = [lst[i:i+5] for i in range(0, len(lst), 5)] 

Тогда обратный порядок значений во вложенных списках можно использовать .reverse()

for elem in new_list: 
    elem.reverse() 
print (new_list) 

Выход:

[[8, 67, 5, 3, 1], [865, 67, 45, 100, 90]] 
+1

Вы можете просто обратить вспять в понимании списка. –

0

Предполагая, что мы получим первоначальный список в переменной L:

L = [1,3,5,67,8,90,100,45,67,865] 

L1 = L[0:5] 
L2 = L[5:10] 
L=[L1,L2] 
print (L) 
L1.reverse() 
L2.reverse() 
L=[L1,L2] 
print (L) 
Смежные вопросы