Python學(xué)習(xí)筆記基本數(shù)據(jù)結(jié)構(gòu)之序列類(lèi)型list tuple range用法分析
本文實(shí)例講述了Python學(xué)習(xí)筆記基本數(shù)據(jù)結(jié)構(gòu)之序列類(lèi)型list tuple range用法。分享給大家供大家參考,具體如下:
list 和 tuple
- list:列表,由 [] 標(biāo)識(shí); 有序;可改變列表元素
- tuple:元組,由 () 標(biāo)識(shí); 有序;不可改變?cè)M元素(和list的主要區(qū)別)
list 和 tuple 的創(chuàng)建:
print([]) # 空l(shuí)ist print(["a",1,True]) # 元素類(lèi)型不限 print([x for x in range(0,6)]) # 列表推導(dǎo)式 print(list("a"),type(list("a"))) # 強(qiáng)制轉(zhuǎn)化 print(()) # 空tuple print((1)) # 不是tuple print((1,)) # 單一元素tuple 一定要加, print(("a",1,True)) # 元素類(lèi)型不限 print(tuple("a"),type(tuple("a"))) # 強(qiáng)制轉(zhuǎn)化
空l(shuí)ist l = []
list 用一對(duì)方括號(hào),用','隔開(kāi)里面的元素 l = [a]
l = ["a",1,True]
元素類(lèi)型不限
列表推導(dǎo)式,如:[x for x in range(0,6)]
(下方會(huì)詳細(xì)介紹 range
及 列表推導(dǎo)式)
類(lèi)型轉(zhuǎn)換 list()
空tuple t = ()
tuple 若只有一個(gè)元素時(shí),注意表示為 t = (1,)
一定要有逗號(hào)
tuple 用一對(duì)圓括號(hào),用','隔開(kāi)里面多個(gè)的元素 t = ("a",1,True)
元素類(lèi)型不限
類(lèi)型轉(zhuǎn)換 tuple()
range
range 可方便的生成一個(gè)等差的序列,有兩種表示 range(stop) 、range(start, stop[, step]) ; 通常用在 for循環(huán)語(yǔ)句中
range(stop) 表示 0 到 stop(不包含stop) 等差為1 的數(shù),如 range(4) 表示 0 1 2 3
range(start, stop[, step]) 表示 從 start 到 stop(不包含stop) 等差為step的數(shù);step缺省為1,可設(shè)置為負(fù)數(shù)
print(type(range(4))) # range本身就是一個(gè)type for i in range(4): print(i) # 0 1 2 3 for i in range(-1): # 從0計(jì)數(shù),無(wú)值 print(i) for i in range(4,7): # 4 5 6 print(i) for i in range(2,7,2): # 2 4 6 print(i) for i in range(5,2,-1): # 5 4 3 print(i)
序列操作
一般操作,不改變list本身
Operation | Result |
---|---|
x in s | True if an item of s is equal to x, else False |
x not in s | False if an item of s is equal to x, else True |
s + t | the concatenation of s and t |
s * n or n * s | n shallow copies of s concatenated |
s[i] | ith item of s, origin 0 |
s[i:j] | slice of s from i to j |
s[i:j:k] | slice of s from i to j with step k |
len(s) | length of s |
min(s) | smallest item of s |
max(s) | largest item of s |
s.index(x[, i[, j]]) | index of the first occurrence of x in s (at or after index i and before index j) |
s.count(x) | total number of occurrences of x in s |
s = ["a",1,True,["b"],2] print("a" in s) # 判斷元素存在于s print("a" not in s) # 判斷元素不存在于s print("b" in s) print(1.0 in s) # 這邊不判斷int float類(lèi)型不同 print("1" in s) # 這邊的1為字符串 a = [1,2] b = [2,1,0] print(a+b) # 序列相加 print(a*3) # 序列乘法 s = [0,1.0,2,3,4,5,6,7,8] print(s[0],s[2],s[3]) # 通過(guò)下標(biāo)來(lái)取出對(duì)應(yīng)的元素 print(type(s[0])) print(type(s[1])) print(s[2:4]) # 取出一段list print(s[2:7:2]) # 根據(jù)步長(zhǎng)取出一段list print(len(s)) # list長(zhǎng)度,即包含幾個(gè)元素 sum = 0 for i in range(0,len(s)): # 使用for循環(huán)來(lái)取出list的每個(gè)元素 print(s[i]) sum += i # 賦值的簡(jiǎn)單表達(dá)式,相當(dāng)于 sum = sum + i print(sum) # 總和 print(min(s),max(s)) # 取最小/最大;注意元素類(lèi)型間若不可比較,會(huì)報(bào)錯(cuò) s = [2,3,1,2,2,3] print(s.index(2)) # 查找對(duì)應(yīng)元素第一次出現(xiàn)的下標(biāo) # print(s.index(4)) # 不存在該元素會(huì)報(bào)錯(cuò) print(s.index(2,3)) # 從下標(biāo)為3的開(kāi)始找起 print(s.index(2,3,4)) # 從下標(biāo)為3到下標(biāo)4的階段內(nèi)找 print(s.count(2)) # 輸出為2的元素的個(gè)數(shù) print(s.count("2")) # 找不到匹配元素,返回0
上方列出的操作方法對(duì) tuple 也都適用,因?yàn)椴⒉桓淖冃蛄斜旧淼脑?,?/p>
s = (2,3,1,2,2,3) print(s[2],s[2:4],len(s),s.count(2)) # 對(duì)tuple均適用
改變序列的操作:僅對(duì) list 適用;若對(duì) tuple 操作,會(huì)報(bào)錯(cuò);clear()
和 copy()
是 Python 3.3 才新增的方法
Operation | Result |
---|---|
s[i] = x | item i of s is replaced by x |
s[i:j] = t | slice of s from i to j is replaced by the contents of the iterable t |
s[i:j:k] = t | the elements of s[i:j:k] are replaced by those of t |
del s[i:j] | same as s[i:j] = [] |
del s[i:j:k] | removes the elements of s[i:j:k] from the list |
s.pop([i]) | retrieves the item at i and also removes it from s |
s.remove(x) | remove the first item from s where s[i] == x |
s.clear() | removes all items from s (same as del s[:]) |
s.append(x) | appends x to the end of the sequence (same as s[len(s):len(s)] = [x]) |
s.extend(t) | extends s with the contents of t (same as s[len(s):len(s)] = t) |
s.insert(i, x) | inserts x into s at the index given by i (same as s[i:i] = [x]) |
s.copy() | creates a shallow copy of s (same as s[:]) |
s.reverse() | reverses the items of s in place |
list的增、刪、改的操作實(shí)際都比較實(shí)用,需要熟練掌握
list元素更改
可對(duì) list 不同的下標(biāo)表示法做以下操作,一般 list 下標(biāo)的操作僅作對(duì)單一元素的更改賦值,如 s[0]=1 ;對(duì)多個(gè)元素的操作見(jiàn)下方示例(僅供參考)
s = [0,1,2,3] s[0] = "1" print(s) # 對(duì)list的某一元素賦另外的值,類(lèi)型也跟隨改變 s[4] = 1 # 不可超過(guò)原list的長(zhǎng)度,會(huì)報(bào)錯(cuò) s[0:3] = [2,3,4] # 可對(duì)一段元素賦另外的值 print(s) s[0:3] = ["x","x"] # 可缺少,元素個(gè)數(shù)也就相應(yīng)的減少了 print(s) s[0:2] = ["x","x","x","x"] # 可增加,元素個(gè)數(shù)也就相應(yīng)的減加了 print(s) s[0] = [0,0] # 單個(gè)元素注意,相當(dāng)于賦值,把序列賦予該元素 print(s) s[1:2] = [0,0] print(s) s = [0,1,2,3,4,5,6,7,8] s[1:8:2] = ["x"]*4 # s[1:8:2] = ["x"]*3 # 這種表示方式元素個(gè)數(shù)一定需要相同,不然會(huì)報(bào)錯(cuò) print(s)
list元素刪除
s = [0,1,2,3,4,5,6,7,8] del s[0:4] # 刪除對(duì)應(yīng)的元素 print(s) s = [0,1,2,3,4,5,6,7,8] del s[1:8:2] # 做刪除 print(s) s = [0,1,2,3,4,5,6,7,8] s.pop(3) print(s.pop(3),s) # 做刪除,并且返回該元素的值 print(s.pop(),s) # 默認(rèn)刪除最后一個(gè) s = [2,"1",1.0,1,2,1] s.remove(1) # 刪除第一個(gè)值為 1 的元素 print(s) s.clear() # 置空,Python3.3引入 print(s)
list元素增加
s = [0,1,2,3,4] s.append(5) # list 最后加一個(gè)元素 print(s) s.extend([6,7]) # list 最后拼接序列 print(s) s.extend(range(3)) print(s) s.insert(1,["x"]) # 在1的位置插入["x"] print(s)
其他操作,reverse
、copy
等
s = [1,2,3] c = s.copy() # 相當(dāng)于 c = s print(c) c.reverse() print(c) s = [2,3,1,4] s.sort() # 排序 print(s) # s = ["b",1,"a",True] # 報(bào)錯(cuò),必須是可比較的類(lèi)型 s = ["b","a"] s.sort() print(s)
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門(mén)與進(jìn)階經(jīng)典教程》及《Python文件與目錄操作技巧匯總》
希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。
相關(guān)文章
Python爬蟲(chóng)之爬取我愛(ài)我家二手房數(shù)據(jù)
我愛(ài)我家的數(shù)據(jù)相對(duì)來(lái)說(shuō)抓取難度不大,基本無(wú)反爬措施. 但若按照規(guī)則構(gòu)造頁(yè)面鏈接進(jìn)行抓取,會(huì)出現(xiàn)部分頁(yè)面無(wú)法獲取到數(shù)據(jù)的情況.在網(wǎng)上看了幾個(gè)博客,基本上都是較為簡(jiǎn)單的獲取數(shù)據(jù),未解決這個(gè)問(wèn)題,在實(shí)際應(yīng)用中會(huì)出錯(cuò),本文有非常詳細(xì)的代碼示例,需要的朋友可以參考下2021-05-05python獲取redis memory使用情況場(chǎng)景分析
這篇文章主要介紹了python獲取redis memory使用情況,項(xiàng)目研發(fā)過(guò)程中,用到Python操作Redis場(chǎng)景,記錄學(xué)習(xí)過(guò)程中的心得體會(huì),需要的朋友可以參考下2022-12-12詳解python項(xiàng)目實(shí)戰(zhàn):模擬登陸CSDN
這篇文章主要介紹了python項(xiàng)目實(shí)戰(zhàn):模擬登陸CSDN,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Python Opencv中用compareHist函數(shù)進(jìn)行直方圖比較對(duì)比圖片
這篇文章主要介紹了Python Opencv中用compareHist函數(shù)進(jìn)行直方圖比較進(jìn)行對(duì)比圖片,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04Django實(shí)現(xiàn)從數(shù)據(jù)庫(kù)中獲取到的數(shù)據(jù)轉(zhuǎn)換為dict
這篇文章主要介紹了Django實(shí)現(xiàn)從數(shù)據(jù)庫(kù)中獲取到的數(shù)據(jù)轉(zhuǎn)換為dict,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03