2016-03-07 102 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'方法(闭包)内定义函数'grouping',但是1 /不要调用'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)