Python 中的range(),以及列表切片方法
range()函數(shù)配合循環(huán)一塊使用很方便,今天來(lái)整理一下這個(gè)函數(shù)的主要用法,以及幾個(gè)小例子
首先來(lái)看一下函數(shù)原型,非常簡(jiǎn)單:
range(start,end [,step])
或者連start都省略掉:
range(end)
其中,start表示開(kāi)始點(diǎn),end表示結(jié)束點(diǎn),真正結(jié)束的位置是end的前一個(gè)值,step表示步長(zhǎng)。
例如:
print(list(range(1,5))) #list函數(shù)是將range的值列表化,這時(shí)候的輸出為 1,2,3,4 (沒(méi)有5!即不包括最后一個(gè)end的值) print(list(range(1,5,2))) #輸出結(jié)果是 [1, 3] ,步長(zhǎng)為2,而且小于5
如果只傳入一個(gè)參數(shù):
print(list(range(5))) #輸出結(jié)果是 [0, 1, 2, 3, 4] ,這時(shí)候默認(rèn)從0開(kāi)始
rang的這些使用,我們可以同列表的遍歷結(jié)合起來(lái),比如對(duì)一個(gè)列表進(jìn)行遍歷訪(fǎng)問(wèn):
#首先我用一個(gè)range生成一個(gè)列表,其中包含0~9 10個(gè)元素 list1 =list(range(10)) # #使用range的方式進(jìn)行遍歷: for i in range(len(list1)): print(list1[i]) #當(dāng)然這種情況我們一般都是直接使用 for value in list1 就可以了 #如果使用切片,訪(fǎng)問(wèn)列表的一部分 for i in range(int(len(list1)/2)): print(list1[i]) #這樣我們就可以得到列表中前一半元素,其他部分同理
有的時(shí)候我們還會(huì)用到一個(gè)列表的逆序,使用range可以這樣:
list1 =list(range(10)) for i in range(len(list1)-1,0,-1): print(list1[i]) #注意這個(gè)地方開(kāi)始的位置是len-1,因?yàn)槲覀兪褂玫牧斜淼南聵?biāo),其實(shí)這里的使用與C語(yǔ)言是一致的,步長(zhǎng)設(shè)置為-1 #就相當(dāng)于我們?cè)趂or循環(huán)的 i--了
使用循環(huán)的方式,我們可以在每次循環(huán)中對(duì)數(shù)據(jù)進(jìn)行一些操作,但是如果僅僅是得到這些數(shù)據(jù),我們可以利用列表的切片slide來(lái)做,切片的方式非常靈活,例如比較簡(jiǎn)單的:
list1 =list(range(10)) print(list1[:]) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] print(list1[3:]) # [3, 4, 5, 6, 7, 8, 9] print(list1[3:5]) # [3, 4] print(list1[1:5:2]) # [1, 3]
從這里我們可以看出切片的使用方式與range大同小異,都是三個(gè)參數(shù),分別控制開(kāi)始,結(jié)束以及步長(zhǎng),在range中我們可以使用 -1 ,那么同理,在切片中,同樣如此,對(duì)于每一個(gè)列表項(xiàng),不僅僅有一個(gè)正向的序號(hào),還有一個(gè)反向的序號(hào),最后一個(gè)元素可以使用list1[-1]來(lái)表示,倒數(shù)第二個(gè)元素就是list1[-2]….:
print(list1[1:-1]) # 這里表示從第一個(gè)元素到最后一個(gè)元素
如果逆序輸出的話(huà):
print(list1[-1::-1]) #或者簡(jiǎn)記為: print(list1[::-1])
接下來(lái)是我之前遇到的一個(gè)問(wèn)題,如何在一個(gè)列表中保存A-Z或者Z-A?
list2 = []
for i in range(ord('A'),ord('A')+26):
list2.append(chr(i))
print(list2)
list3 = [chr(ord('A')+x) for x in range(26)]
print(list3)
這兩種方法都可以生成一個(gè)包含A-Z的列表,對(duì)于這個(gè)問(wèn)題,如果使用過(guò)其他語(yǔ)言,首先可能會(huì)使用int(‘A')獲取A的ASCII,但是在Python中卻會(huì)報(bào)錯(cuò),因?yàn)檫@里int()函數(shù)是默認(rèn)基與十進(jìn)制的,對(duì)于字母轉(zhuǎn)化為數(shù)字,有函數(shù)ord可以使用,有字母轉(zhuǎn)化回ASCII則可以使用chr()函數(shù),第二種方式是使用了列表生成式的方式,寫(xiě)起來(lái)比較簡(jiǎn)單,除了這些方法之外,還可以使用map()函數(shù)對(duì)列表的每一個(gè)值進(jìn)行處理,在此不再介紹。
以上這篇Python 中的range(),以及列表切片方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實(shí)現(xiàn)八皇后問(wèn)題示例代碼
這篇文章主要給大家介紹了關(guān)于利用Python實(shí)現(xiàn)八皇后問(wèn)題的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
Python用61行代碼實(shí)現(xiàn)圖片像素化的示例代碼
這篇文章主要介紹了Python用61行代碼實(shí)現(xiàn)圖片像素化的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
numpy按列連接兩個(gè)維數(shù)不同的數(shù)組方式
今天小編就為大家分享一篇numpy按列連接兩個(gè)維數(shù)不同的數(shù)組方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-12-12

