使用函数进行python任意切片

使用函数进行python任意切片,python,list,Python,List,我正在尝试创建一个函数,该函数可以生成列表的任意部分,例如: def slice(arr, a, b, step): return arr[a:b:step] 问题是,如何处理用户是否希望切片arr[5:]或arr[:5]以一种好的方式?省略切片中的值相当于使用None,因此我建议使用此函数签名: def slice_(arr, start=None, stop=None, step=None): return arr[start:stop:step] 建议不要在函数

我正在尝试创建一个函数,该函数可以生成列表的任意部分,例如:

def slice(arr, a, b, step):
        return arr[a:b:step]

问题是,如何处理用户是否希望切片arr[5:]或arr[:5]以一种好的方式?

省略切片中的值相当于使用
None
,因此我建议使用此函数签名:

def slice_(arr, start=None, stop=None, step=None):
    return arr[start:stop:step]
建议不要在函数中使用名称
slice
,因为它是阴影

注意:您不需要为此功能定义自己的函数。使用动态输入对对象进行切片的一种更具Python风格的方法是直接使用getitem:

arr[slice(a,b,step)]

这已存在于标准库中

>>> import operator
>>> operator.getitem(arr, slice(start, stop, step))

但是已经有一个函数可以做到这一点。它是
list.\uuuu getitem\uuuuu
。此外,已经有了内置的&1,您有非常旧的Python版本!而且它不适用于步骤,并且它与2.7对象模型中不推荐使用的部分挂钩。