簡體   English   中英

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

[英]Slicing to reverse part of a list in python

我有一個列表,我想從后到尾提取一個子列表。 有兩行代碼,這是

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

是否有切片符號在一行中獲得相同的效果? 這個

mysublist = mylist[end:begin:-1]

是不正確的,因為它包含end並排除了begin元素。 這個

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

begin為0時失敗,因為begin-1現在是-1 ,它被解釋為mylist的最后一個元素的索引。

如果begin0請使用None

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

None意味着'默認',與省略值相同。

您始終可以將條件表達式放在單獨的行中:

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, 3
>>> mylist[end - 1:None if not begin else begin - 1:-1]
['baz', 'bar', 'foo']

您可以簡單地將兩行折疊成一行:

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

您始終可以使用功能轉換的強大功能:

mysublist = list(reversed(mylist[begin:end]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM