微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

切片以反转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']

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐