課程
/后端開(kāi)發(fā)
/Python
/初識(shí)Python
L=['Adam','Lisa','Bart','Paul']
>>>L[-4:-1:2] ? ? ? ? ? ? ? ? ? ? ? ? ------->這個(gè)沒(méi)理解
2016-04-07
源自:初識(shí)Python 8-2
正在回答
Adam, Lisa, Bart, Paul 用倒數(shù)表示的話其分別對(duì)應(yīng)的序號(hào)為-4,-3,-2,-1。所以,L[-4:-1:2]的意思是從從Adam開(kāi)始到Paul,每?jī)蓚€(gè)取一個(gè)(即最后那個(gè)“:2”的意思),或隔一個(gè)取一個(gè)。如此其結(jié)果應(yīng)該為Adam,Bart。
沒(méi)有理由退縮 提問(wèn)者
羅格里格斯
粘貼自己的以前在猿問(wèn)里的回答給 題主:
————————————————————分隔線————————————————————————
樓主問(wèn)的是列表,及Python中所有可迭代類型類型的 切片問(wèn)題, 由于我電腦上裝的是Python 3.x, 在 range() 這個(gè)內(nèi)建函數(shù)上和淚珠的2.x 有些許差別:
2.x: range(start : stop : step) 生成 一個(gè) 從start開(kāi)始(包含start)到stop結(jié)束(不包含stop),步長(zhǎng)為 step 的列表(下稱:list類型)3.x range(start : stop : step) 生成一個(gè) 序列生成器(range 類型),在這里,range自成一種類型了, 不過(guò) start, stop, step 的意義是一樣的。
2.x: range(start : stop : step) 生成 一個(gè) 從start開(kāi)始(包含start)到stop結(jié)束(不包含stop),步長(zhǎng)為 step 的列表(下稱:list類型)
3.x range(start : stop : step) 生成一個(gè) 序列生成器(range 類型),在這里,range自成一種類型了, 不過(guò) start, stop, step 的意義是一樣的。
以上是兩個(gè)版本Python的區(qū)別,扯開(kāi)一句,Python 3.x 和2.x 的不兼容在前幾年3.x 剛推出是 短時(shí)間內(nèi)看對(duì)Python語(yǔ)言是一種傷害, 一種分裂。 但是站在2016的開(kāi)端來(lái)看,各種常用的庫(kù)都已經(jīng)支持了3.x, 且3.x版本比2.x 版本在 各個(gè)方面都高級(jí)和合理了很多,所以建議初學(xué)者都從3.x 開(kāi)始學(xué)習(xí)Python. ?range 的在3.x的改進(jìn)就能看出: 在2.x 中產(chǎn)生一個(gè)list , 而3.x 中產(chǎn)生的是一個(gè) 生成器,在內(nèi)存優(yōu)化上更高一層。?
好了扯遠(yuǎn)了, 寫(xiě)這些主要是為了說(shuō)明 ?用3.x 演示代碼和2.x 的區(qū)別: 在3.x 中 如果想保證 開(kāi)頭聲明的L 是list ,如下:? ?
L?=?list(range(1,101))
我們具體解釋下 range(start : stop : step) 中三個(gè)暫稱為 參數(shù)的作用和用法,以及一些小技巧:
1, start: 如上所說(shuō), 為列表(3.x 為 range 類型)的開(kāi)始,?切片或者聲明時(shí) 可以省略,省略默認(rèn) start為0。
2, stop: ?列表的結(jié)束(不包含),?切片時(shí)可以省略,省略默認(rèn)為列表的最后。
3, step: 為步長(zhǎng),即 列表中元素之間的差,?切片或者聲明時(shí) 可以省略, 默認(rèn)為1。
下面就range函數(shù)的各種省略的組合用代碼 一一說(shuō)明:
>>>?list(range(3))?##?聲明時(shí)?省略?start?和?step [0,?1,?2] ? >>>?list(range(1,3))?##?聲明時(shí)?省略?step [1,?2] ? >>>?list(range(1,11,2))??##?步長(zhǎng)為2 [1,?3,?5,?7,?9] ? >>>?list(range(11,1,-2))?##?步長(zhǎng)為負(fù)數(shù) [11,?9,?7,?5,?3]
列表切片的start ?stop ?step 和 range函數(shù) 差不多:
>>>?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?(步長(zhǎng)),?step默認(rèn)為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?默認(rèn)為0;?省略步長(zhǎng)?step,?默認(rèn)為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?,?默認(rèn)到列表的結(jié)尾。 [1,?2,?3,?4,?5,?6,?7,?8,?9,?10,?11,?12,?13,?14,?15,?16,?17,?18,?19,?20]
應(yīng)該還有更多的寫(xiě)法, ?3個(gè)位置: start, stop, step ; 且它們均可以為 正數(shù) 或負(fù)數(shù)。 題主可以自己試試。
舉報(bào)
學(xué)python入門(mén)視頻教程,讓你快速入門(mén)并能編寫(xiě)簡(jiǎn)單的Python程序
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號(hào)-11 京公網(wǎng)安備11010802030151號(hào)
購(gòu)課補(bǔ)貼聯(lián)系客服咨詢優(yōu)惠詳情
慕課網(wǎng)APP您的移動(dòng)學(xué)習(xí)伙伴
掃描二維碼關(guān)注慕課網(wǎng)微信公眾號(hào)
2016-04-07
Adam, Lisa, Bart, Paul 用倒數(shù)表示的話其分別對(duì)應(yīng)的序號(hào)為-4,-3,-2,-1。所以,L[-4:-1:2]的意思是從從Adam開(kāi)始到Paul,每?jī)蓚€(gè)取一個(gè)(即最后那個(gè)“:2”的意思),或隔一個(gè)取一個(gè)。如此其結(jié)果應(yīng)該為Adam,Bart。
2016-04-07
粘貼自己的以前在猿問(wèn)里的回答給 題主:
————————————————————分隔線————————————————————————
樓主問(wèn)的是列表,及Python中所有可迭代類型類型的 切片問(wèn)題, 由于我電腦上裝的是Python 3.x, 在 range() 這個(gè)內(nèi)建函數(shù)上和淚珠的2.x 有些許差別:
以上是兩個(gè)版本Python的區(qū)別,扯開(kāi)一句,Python 3.x 和2.x 的不兼容在前幾年3.x 剛推出是 短時(shí)間內(nèi)看對(duì)Python語(yǔ)言是一種傷害, 一種分裂。 但是站在2016的開(kāi)端來(lái)看,各種常用的庫(kù)都已經(jīng)支持了3.x, 且3.x版本比2.x 版本在 各個(gè)方面都高級(jí)和合理了很多,所以建議初學(xué)者都從3.x 開(kāi)始學(xué)習(xí)Python. ?range 的在3.x的改進(jìn)就能看出: 在2.x 中產(chǎn)生一個(gè)list , 而3.x 中產(chǎn)生的是一個(gè) 生成器,在內(nèi)存優(yōu)化上更高一層。?
好了扯遠(yuǎn)了, 寫(xiě)這些主要是為了說(shuō)明 ?用3.x 演示代碼和2.x 的區(qū)別: 在3.x 中 如果想保證 開(kāi)頭聲明的L 是list ,如下:? ?
我們具體解釋下 range(start : stop : step) 中三個(gè)暫稱為 參數(shù)的作用和用法,以及一些小技巧:
1, start: 如上所說(shuō), 為列表(3.x 為 range 類型)的開(kāi)始,?切片或者聲明時(shí) 可以省略,省略默認(rèn) start為0。
2, stop: ?列表的結(jié)束(不包含),?切片時(shí)可以省略,省略默認(rèn)為列表的最后。
3, step: 為步長(zhǎng),即 列表中元素之間的差,?切片或者聲明時(shí) 可以省略, 默認(rèn)為1。
下面就range函數(shù)的各種省略的組合用代碼 一一說(shuō)明:
列表切片的start ?stop ?step 和 range函數(shù) 差不多:
應(yīng)該還有更多的寫(xiě)法, ?3個(gè)位置: start, stop, step ; 且它們均可以為 正數(shù) 或負(fù)數(shù)。 題主可以自己試試。