如何在Python中为切片对象的开始和停止添加数字?

如何在Python中为切片对象的开始和停止添加数字?,python,slice,Python,Slice,我阅读了一些关于Python中切片的内容,但是没有发现关于以一种简单的方式将切片对象的start和stop增加一个常数的内容。我所说的“简单”是指:a)在同一行,b)在一个地方,c)没有额外的变量 ['a', 'b', 'c', 'd', 'e'][0:2] #works ['a', 'b', 'c', 'd', 'e'][(0:2)+1] #does not work, what I would find most convenient ['a', 'b', 'c',

我阅读了一些关于Python中切片的内容,但是没有发现关于以一种简单的方式将切片对象的
start
stop
增加一个常数的内容。我所说的“简单”是指:a)在同一行,b)在一个地方,c)没有额外的变量

['a', 'b', 'c', 'd', 'e'][0:2]         #works
['a', 'b', 'c', 'd', 'e'][(0:2)+1]     #does not work, what I would find most convenient
['a', 'b', 'c', 'd', 'e'][(0+1):(2+1)] #works, but needs a change at two places
i = 1
['a', 'b', 'c', 'd', 'e'][(0+i):(2+i)] #works but needs an extra line and variable

在切片级别上,
slice(0,2,1)+1不起作用,因为
不支持+:'slice'和'int'的操作数类型。那么,如何以简单的方式添加一个数字来启动和停止Python中切片对象的参数呢

实现这样一件事是没有办法的。如果您真的只想用一行代码完成此操作,您仍然可以执行以下操作:

x=1; l[x:x+2]

但这有点难看…

没有办法实现这样的目标。如果您真的只想用一行代码完成此操作,您仍然可以执行以下操作:

x=1; l[x:x+2]

但是这有点难看…

为了避免写两次
+i
,你可以这样做

my_list[i:][:length]
例如:

i = 2
length = 3
print(['0', '1', '2', '3', '4', '5', '6', '7'][i:][:length])

--> output: ['2', '3', '4']

为了避免写两次
+i
,您可以执行以下操作

my_list[i:][:length]
例如:

i = 2
length = 3
print(['0', '1', '2', '3', '4', '5', '6', '7'][i:][:length])

--> output: ['2', '3', '4']

看起来你的最后一个例子做了你想要的,你能澄清你的问题吗?你如何解决这个问题取决于周围的代码做了什么,看起来像什么。使用变量似乎是一个足够好的解决方案。@Q您是否试图询问如何获取固定大小的切片,但能够轻松更改从何处获取切片?就像你可能想要
arr[0:2]
arr[2:4]
arr[4:6]
@depperm一样,我清楚地说明了“简单”对我来说意味着什么,因此我的最后一个例子在我看来并不“简单”,也不是我想要的解决方案。@QuinnMortimer看起来你的最后一个例子就是你想要的,你能澄清你的问题吗?你如何解决这个问题取决于周围代码的功能和外观。使用变量似乎是一个足够好的解决方案。@Q您是否试图询问如何获取固定大小的切片,但能够轻松更改从何处获取切片?就像你可能想要
arr[0:2]
arr[2:4]
arr[4:6]
@depperm一样,我清楚地说明了“简单”对我来说意味着什么,因此我的最后一个例子在我看来并不“简单”,也不是我想要的解决方案。@QuinnMortimer非常感谢你提供了一个例子@Heike+1:)感谢你提供了一个例子@Heike+1:)