我该如何切割清单并扭转两半?

时间:2017-10-21 04:45:37

标签: python list slice

例如,如果我输入一个带有列表和索引的函数,我该如何对其进行编码,以便将列表切成两半并使用循环交换位置

function([0,1,2,3,4], 2)

返回

[3, 4, 2, 0, 1]

我试过了:

def function(list_value):
    first_half = list_value[:index] 
    second_half = list_value[(index+1):] 
    swapped_sequence = second_half + first_half 
    swapped_sequence = swapped_sequence.insert(index, index) 
    return swapped_sequence

2 个答案:

答案 0 :(得分:1)

这是一个基本版本,只需使用列表索引并加入3个部分。

def cut(x, i):
    try:
        return x[i + 1:] + x[i:i + 1] + x[:i]  
    except IndexError:  
        return []

答案 1 :(得分:0)

虽然速度不快,但我们可以使用np.roll:

import numpy as np

def function(lst,ind):
    roll = np.roll(lst, ind)[:-1]
    lst_n = np.insert(roll, ind, ind)
    return lst_n

function([0,1,2,3,4,5,6], 2)