我有一个函数,它应该返回包含片[a,b]中列表中的元素。 如果a和b都是已知的,那么这是一个不需要考虑的问题:
def my_slice(some_list, a, b):
return some_list[a:b+1]
但是,有时用户可能需要[a,final\u index]或[0,b]或[0,final\u index]范围内的元素。 天真地说,您可能只是向参数添加默认值
def my_slice(some_list, a=0, b=-1):
return some_list[a:b+1]
但这将失败
>>> li = range(5)
>>> my_slice(li)
[]
因为这与li[0:0]
相同,当然是一个空列表。你知道吗
我能做到
def my_slice(some_list, a=0, b=-1):
return some_list[a:] if b==-1 else some_list[a:b+1]
但我很好奇是否还有别的办法。你知道吗
您可以使用
None
包含最后一个位置,但是您需要检查您没有负的步骤。你知道吗将屈服
怎么样
我认为这应该涵盖所有情况:
我不确定您希望如何处理扩展列表边界的切片-忽略它们或引发错误?你知道吗
你总是要测试参数b。我会做:
相关问题 更多 >
编程相关推荐