Есть ли другой способ добавления списка в существующий список без использования цикла? - PullRequest
2 голосов
/ 01 ноября 2019

Я пытаюсь обратить массив из определенного индекса. Этот код работает хорошо, но можем ли мы сделать это без цикла?

def flip(self,currentState,index):
        newStackOfPanCakes = currentState[:]
        sliceOfStack = currentState[index:]
        sliceOfStack.reverse()
        #newStack = currentState[(index+1):]
        for i in range(index,len(currentState)):
            newStackOfPanCakes[i] = sliceOfStack[i-2]
        return newStackOfPanCakes

Ответы [ 2 ]

3 голосов
/ 01 ноября 2019

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

def flip(self,currentState,index):
    return currentState[:index]+currentState[index:][::-1]
2 голосов
/ 01 ноября 2019

Вы также можете попробовать это работает, как вы хотите.

    def flip(currentState,index):
        newStackOfPanCakes = currentState[:]
        sliceOfStack = currentState[index:]
        sliceOfStack.reverse()
        del newStackOfPanCakes[index:]
        newStackOfPanCakes.extend(sliceOfStack)
        return newStackOfPanCakes

    arr = [7,9,5,4,2,3,1,8,6]
    index = 4
    flip(arr,index)
...