亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

倒序切片的一個例子 ,沒有理解

L=['Adam','Lisa','Bart','Paul']

>>>L[-4:-1:2] ? ? ? ? ? ? ? ? ? ? ? ? ------->這個沒理解

正在回答

2 回答

Adam, Lisa, Bart, Paul 用倒數表示的話其分別對應的序號為-4,-3,-2,-1。所以,L[-4:-1:2]的意思是從從Adam開始到Paul,每兩個取一個(即最后那個“:2”的意思),或隔一個取一個。如此其結果應該為Adam,Bart。

3 回復 有任何疑惑可以回復我~
#1

沒有理由退縮 提問者

好的,我懂啦,謝謝
2016-04-07 回復 有任何疑惑可以回復我~
#2

沒有理由退縮 提問者

非常感謝!
2016-04-20 回復 有任何疑惑可以回復我~
#3

羅格里格斯

那中間的-1 沒有起作用唄
2016-11-17 回復 有任何疑惑可以回復我~

粘貼自己的以前在猿問里的回答給 題主:

————————————————————分隔線————————————————————————


樓主問的是列表,及Python中所有可迭代類型類型的 切片問題, 由于我電腦上裝的是Python 3.x, 在 range() 這個內建函數上和淚珠的2.x 有些許差別:

2.x: range(start : stop : step) 生成 一個 從start開始(包含start)到stop結束(不包含stop),步長為 step 的列表(下稱:list類型)

3.x range(start : stop : step) 生成一個 序列生成器(range 類型),在這里,range自成一種類型了, 不過 start, stop, step 的意義是一樣的。

以上是兩個版本Python的區別,扯開一句,Python 3.x 和2.x 的不兼容在前幾年3.x 剛推出是 短時間內看對Python語言是一種傷害, 一種分裂。 但是站在2016的開端來看,各種常用的庫都已經支持了3.x, 且3.x版本比2.x 版本在 各個方面都高級和合理了很多,所以建議初學者都從3.x 開始學習Python. ?range 的在3.x的改進就能看出: 在2.x 中產生一個list , 而3.x 中產生的是一個 生成器,在內存優化上更高一層。?


好了扯遠了, 寫這些主要是為了說明 ?用3.x 演示代碼和2.x 的區別: 在3.x 中 如果想保證 開頭聲明的L 是list ,如下:? ?

L?=?list(range(1,101))

我們具體解釋下 range(start : stop : step) 中三個暫稱為 參數的作用和用法,以及一些小技巧:

1, start: 如上所說, 為列表(3.x 為 range 類型)的開始,?切片或者聲明時 可以省略,省略默認 start為0。

2, stop: ?列表的結束(不包含),?切片時可以省略,省略默認為列表的最后。

3, step: 為步長,即 列表中元素之間的差,?切片或者聲明時 可以省略, 默認為1。

下面就range函數的各種省略的組合用代碼 一一說明:

>>>?list(range(3))?##?聲明時?省略?start?和?step
[0,?1,?2]
?
>>>?list(range(1,3))?##?聲明時?省略?step
[1,?2]
?
>>>?list(range(1,11,2))??##?步長為2
[1,?3,?5,?7,?9]
?
>>>?list(range(11,1,-2))?##?步長為負數
[11,?9,?7,?5,?3]

列表切片的start ?stop ?step 和 range函數 差不多:

>>>?L=?list(range(1,21))??##聲明?列表?L
>>>?print?(L)
[1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18,?19,?20]
?
>>>?print(L[2:6])?##?省略?step?(步長),?step默認為1
[3,?4,?5,?6]
?
>>>?print(L[2:10:2])?##?顯式聲明?step?為2
[3,?5,?7,?9]
?
>>>?print(L[10:2:-2])??##?顯式聲明?step?為?-2
[11,?9,?7,?5]
?
>>>?print(L[:19])?##?省略?start,?start?默認為0;?省略步長?step,?默認為1
[1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18,?19]
?
>>>?print(L[0::1])?##?省略?stop?,?默認到列表的結尾。
[1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18,?19,?20]

應該還有更多的寫法, ?3個位置: start, stop, step ; 且它們均可以為 正數 或負數。 題主可以自己試試。


0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
初識Python
  • 參與學習       758398    人
  • 解答問題       8967    個

學python入門視頻教程,讓你快速入門并能編寫簡單的Python程序

進入課程

倒序切片的一個例子 ,沒有理解

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號