python反转列表不用切片_关于python:使用切片表示法反转列表
在下面的例子:
foo = ['red', 'white', 'blue', 1, 2, 3]
在所有的元素:將打印foo[0:6:1]foo。然而,foo[6:0:-1]將omit 0th首屆歐元。
>>> foo[6:0:-1]
[3, 2, 1, 'blue', 'white']
我的理解是,我可以使用foo.reverse foo()或():1】:反向印刷的列表,但我試圖理解為什么::foo的0 - 1 [ 6 ]不是打印整個(gè)名單?
還要注意foo[7:None:-1]的可能性:)
在試圖理解切片符號(hào)之前,我從來(lái)沒(méi)有使用過(guò)python,我的問(wèn)題是為什么foo[6:0:-1]沒(méi)有拋出索引錯(cuò)誤,python不關(guān)心它嗎?因?yàn)樯厦娴氖纠龜?shù)組中沒(méi)有6個(gè)索引。
@Mubasharahmad切片不是索引,并且在超出界限時(shí)不會(huì)拋出任何錯(cuò)誤。不過(guò),索引在超出界限時(shí)確實(shí)會(huì)引發(fā)異常。
Slice notication in short:
[ : : ]
如果你想包括第一個(gè)元素,當(dāng)你反復(fù)列表時(shí),離開中間元素empty,就像這樣:
ZZU1
你也可以在這里找到一些關(guān)于Python的好信息解釋Python的切削標(biāo)記
這:[ : : ]是我見過(guò)的最清晰的切片語(yǔ)法解釋。稱之為"要排除的第一個(gè)元素"確實(shí)使事情變得很明顯。
用負(fù)的步驟進(jìn)行負(fù)的切片怎么樣?我還是不明白。
當(dāng)使用負(fù)索引作為或時(shí),它是從列表的后面進(jìn)行索引的,因此-1是最后一個(gè)元素,-2是第二個(gè)到最后一個(gè)元素,等等。例如,x[-1:-4:-1]將按相反的順序得到x的最后三個(gè)元素。因此,您可以將其解釋為"從列表中的最后一個(gè)元素(-1)向后移動(dòng)每個(gè)元素(-1步),直到但不包括從末尾開始的第四個(gè)元素(-4)。
倒車時(shí)(如為-1時(shí)),我認(rèn)為有幫助。所以,要從一個(gè)列表中按相反的順序得到n個(gè)"最左邊"的元素:foo[n-1::-1]。以相反的順序獲得n的"最右邊"元素:foo[-1:-n-1:-1]。
如果你有麻煩的記憶,你可以嘗試做冰淇淋:
[In:out:shake it all about]
[First element to include:first element to leave out:the step to use]
YMV
...why foo[6:0:-1] doesn't print the entire list?
因?yàn)橹兄凳俏ㄒ坏?#xff0c;比包容性強(qiáng),停止值。The interval notication is[start,stop.]
This is exactly how[x]range works:
>>> range(6, 0, -1)
[6, 5, 4, 3, 2, 1]
這些是列入你的結(jié)果列表的線索,而不包括第一個(gè)項(xiàng)目的0。
>>> range(6, -1, -1)
[6, 5, 4, 3, 2, 1, 0]
另一種看待它的方式是:
>>> L = ['red', 'white', 'blue', 1, 2, 3]
>>> L[0:6:1]
['red', 'white', 'blue', 1, 2, 3]
>>> len(L)
6
>>> L[5]
3
>>> L[6]
Traceback (most recent call last):
File"", line 1, in
IndexError: list index out of range
The index 6 is beyond(one-past,precisely)the valid indices for L,so excluding it from the range as the excluded stop value:
>>> range(0, 6, 1)
[0, 1, 2, 3, 4, 5]
還是給你名單上每一個(gè)項(xiàng)目的線索。
range可以,但Slice不能,因?yàn)?1是最后一個(gè)元素。因此,l=[1, 2, 3]和l[2:-1:-1] == []。
這個(gè)答案可能是一個(gè)小問(wèn)題,但對(duì)一個(gè)同樣麻煩的人來(lái)說(shuō),它可能是一個(gè)幫助。你可以用任意結(jié)束的列表到0索引,應(yīng)用第二個(gè)插入點(diǎn)如:
>>> L = list(range(10))
>>> L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> (start_ex, end) = (7, 0)
>>> L[end:start_ex][::-1]
[6, 5, 4, 3, 2, 1, 0]
這實(shí)際上非常有用,因?yàn)槟梢詫?duì)所有情況使用相同的語(yǔ)法。您不必將0視為特殊情況。
使用
>>>foo[::-1]
This displays the reverse of the list from the end element to the start,
總結(jié)
以上是生活随笔為你收集整理的python反转列表不用切片_关于python:使用切片表示法反转列表的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: matlab1分钟数据转5分钟,把股票的
- 下一篇: 信息学奥赛一本通 1181:整数奇偶排序