切片以反转python中列表的一部分

我有一个列表,我想从后到尾提取一个子列表.有两行代码,这是

mylist = [...]
mysublist = mylist[begin:end]
mysublist = mysublist[::-1]

是否有切片符号在一行中获得相同的效果?这个

mysublist = mylist[end:begin:-1]

是不正确的,因为它包含结尾并排除了begin元素.这个

mysublist = mylist[end-1:begin-1:-1]

当begin为0时失败,因为begin-1现在是-1,它被解释为mylist的最后一个元素的索引.

解决方法

如果begin为0,请使用None:

mysublist = mylist[end - 1:None if not begin else begin - 1:-1]

无意味着’认’,与省略值相同.

您始终可以将条件表达式放在单独的行中:

start,stop,step = end - 1,None if not begin else begin - 1,-1
mysublist = mylist[start:stop:step]

演示:

>>> mylist = ['foo','bar','baz','eggs']
>>> begin,end = 1,3
>>> mylist[end - 1:None if not begin else begin - 1:-1]
['baz','bar']
>>> begin,end = 0,'foo']

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...