06-列表的操作

g列表的操作


列表相加操作

格式:變量 = 列表1 + 列表2
結(jié)果:集合兩個列表所有元素的新列表
注意:+兩側(cè)都要是列表類型

# L = [1,2,3]
# L1 = [4,5,6]
# print(L+L1)

列表相乘操作

格式:變量 = 列表 * 整數(shù)
結(jié)果:原列表內(nèi)所用元素復(fù)制N遍的新列表

# L = [1,2,3]
# print(L*2)

索引操作

變量[索引]

分片操作

  • 格式:變量 = 列表[:]
    獲取整個列表
  • 格式:變量 = 列表[:結(jié)束索引]
    獲取列表開頭到結(jié)束索引之前的數(shù)據(jù)組成的列表
  • 格式:變量 = 列表[開始索引:]
    獲取列表開始索引到列表末尾的數(shù)據(jù)組成的列表
  • 格式:變量 = 列表[開始索引:結(jié)束索引]
    • 獲取開始索引和結(jié)束索引之間的數(shù)據(jù)組成的列表(包含開始索引,不包含結(jié)束索引)
  • 格式:變量 = 列表[開始索引:結(jié)束索引:間隔值]
    • 獲取開始索引和結(jié)束索引之間的數(shù)據(jù)(按照間隔值來獲热姥痢)組成的列表(包含開始索引,不包含結(jié)束索引)
# L = [1,2,3,4,5,6,7,8,9]
# L1 = L[6:3:-1]
# print(L1)

成員檢測

  • 檢測一個數(shù)據(jù)是否在列表中
    格式:值 in 列表
    結(jié)果:布爾值

  • 檢測一個數(shù)據(jù)是否不在列表中
    格式:值 not in 列表
    結(jié)果:布爾值

列表的遍歷操作


for...in

  • 格式:
    for 變量 in 列表:
    使用變量
# L = [1,2,3,4,5]
# for val in L:
#     print(val)

while

  • 格式
    i = 0
    while i<len(列表):
    使用列表中的元素(列表[i])
    i += 1
# L = [1,2,3,4,5,6,7]
# i = 0
# while i<len(L):
#     print(L[i])
#     i += 1

遍歷同等長度的二級列表

列表 = [[值1,值2],[值1,值2],....]
for 變量1,變量2 in 列表:
    使用變量1和變量2

注意:變量1取二級列表中的第一個值炕横,變量2取第二個值

# L = [[1,2],[3,4],[5,6]]
# for val,var in L:
#     print(val,var)

遍歷非同等長度的二級列表

列表 = [[值1卿嘲,值2]梅肤,[值1授帕,值2,值3],[值]...]
for 變量1 in 列表:
    for 變量2 in 變量1:
        使用變量2(變量2是二級列表中的每個值)
# L = [[1,2],[3,4],[5,6,7]]
# for val in L:
#     print(val,type(val))
#     for var in val:
#         print(var,type(var))

列表的十一種操作方法

copy() 復(fù)制列表

  • 涉及深淺拷貝憋飞,此為淺拷貝

clear()

  • 清空列表

append()
功能:向列表的末尾添加新的元素
格式:列表.append(值)
返回值:None
注意:新添加的值在列表的末尾,該函數(shù)直接操作原有列表

# L.append(8)
# L.append(7)
# print(L)

insert()
功能:在指定位置之前插入元素
格式:列表.insert(索引,值)
返回值:None
注意:直接改變原有列表

# L.insert(0,1)
# print(L)

extend()
功能:前一個列表繼承另一個序列避凝,即直接將另一個序列中的元素添加到這個列表中撑螺,如果這個序列是字符串,字符串中每個字符作為一個元素添加到列表中
格式:列表.extend(序列)
返回值:None
注意:直接改變原有列表

# L.append(L1)
# print(L)
# L.extend(L1)
# print(L)

pop()
功能:在列表中移除一個元素
格式:列表.pop(索引)
返回值:無
注意:沒有指定索引,默認(rèn)移除最后一個元素

# L.pop()
# L.pop(0) #可以傳遞索引值  來刪除指定的元素
# print(L)

remove()
功能:移除指定的值唇敞,但只能移除列表中該值第一次出現(xiàn)的元素
格式:列表.remove(值)
返回值:無
注意:如果有索引的情況下推薦使用POP移除歇拆,效率比remove高

# L.remove([7,8,9])
# L.remove(8) #如果有多個相同的元素  默認(rèn)刪除第一個
# print(L)

index()
功能:獲取某個元素在列表中的索引,只能獲取第一個出現(xiàn)的該元素的索引逻卖,擁有3個參數(shù)
格式:index(元素坤邪,開始索引,結(jié)束索引)
返回值:整數(shù)
注意:值不存在與列表或指定區(qū)間內(nèi)時(shí)拋出異常錯誤!

# print(L.index(8))
# print(L.index(7,5))
# L = [2,1,5,4,2,4,6,4,2,1,5]
# print(L.pop(L.index(5,L.index(5)+1)))
# print(L)

count()
功能:計(jì)算某個元素出現(xiàn)的次數(shù)
格式:列表.count(值)
返回值:整數(shù)

# L = [2,1,5,4,2,4,6,4,2,1,5]
# print(L.count(2))
# print(L.count(5))
# print(L.count(6))

sort()
功能:列表排序

  • 格式:列表.sort() 按照從小到大排序(數(shù)字)
  • 格式:列表.sort(reverse=True) 按照從大到小排序(數(shù)字)
  • 格式:列表.sort(key=函數(shù)) 對值進(jìn)行指定的函數(shù)處理之后在從小到大排序
  • 格式:列表.sort(key=函數(shù),reverse=True) 對值進(jìn)行指定的函數(shù)處理之后在從大到小排序
    返回值:None
    注意:直接改變原有列表
# L = [2,1,4,3,7,6]
# L.sort()
# print(L)
# L = [2,1,4,3,7,6]
# L1 = L.sort()
# L1 = sorted(L)
# print(L)
# print(L1)

L = [
    {"name":"jack","age":18},
    {"name":"rose","age":22},
    {"name":"tom","age":102},
    {"name":"jerry","age":19}
    ]
L.sort(key=lambda x:x["name"])
print(L)

reverse()
功能:列表反轉(zhuǎn)操作
格式:列表.reverse()
返回值:None

# L = [2,1,4,3,7,6]
# L.reverse()
# print(L)

列表推導(dǎo)式

列表的推導(dǎo)公式默認(rèn)是層層嵌套的關(guān)系
格式:

例1:已知L = [1,2,3,4,5,6,7,8,9],求變量L內(nèi)所有元素的平方組成的列表

for循環(huán)寫法:

# L1 = []
# for val in L:
#     L1.append(val**2)
# print(L1)

列表推導(dǎo)式

# L1 = [var**2 for var in L]
# print(L1)

例2:求L中所有偶數(shù)的平方

for循環(huán)寫法

# L1 = []
# for val in L:
#     if val % 2 == 0:
#         L1.append(val**2)
# print(L1)

列表推導(dǎo)式

# L1 = [val**2 for val in L if val%2==0]
# print(L1)

例3:L = ["jack","ada","tom","WE","file","continue","break"]求列表中所有元素的長度組成的列表

# L1 = [len(i) for i in L]
# print(L1)

例4:已知str="abc" str2="ABC" 求兩個字符串中的元素的所有組合

# L1 = [x+y for x in str1 for y in str2 ]
# print(L1)

例5:求x,y組成的元組 x是1~5之間的偶數(shù) y是1~6之間的奇數(shù)

# L1 = [x for x in range(1,5) if x % 2==0]
# print(tuple(L1))
# L2 = [y for y in range(1,6) if y % 2==1]
# print(tuple(L2))
#
# list1 = [(x,y) for x in range(2,6,2) for y in range(1,7,2)]
# print(list1)

# L = [(x,y) for x in range(1,5) if x%2==0 for y in range(1,7) if y%2==1]
# print(L)

例6:已知 L = [[1,2,3],[4,5,6],[7,8,9]][3,6,9]組成的列表

# L1 = [i[2] for i in L]
# print(L1)

例7:求上面列表中[1,5,9]組成的列表

# L1 = [L[i][i] for i in range(len(L))]
# print(L1)

# i = 0,1,2
# 當(dāng)i = 0  L[i] = [1,2,3]  L[i][i] = 1
# 當(dāng)i = 1  L[i] = [4,5,6]  L[i][i] = 5
# 當(dāng)i = 2  L[i] = [7,8,9]  L[i][i] = 9

深淺拷貝

需要用到copy模塊皆看,import copy

賦值操作 賦值后的列表跟隨元列表進(jìn)行改變

  • 賦值操作直接把新變量的內(nèi)存地址指向賦值的變量的內(nèi)存地址织阅,所以原變量變化時(shí)皂冰,新變量隨之變化
# L = [2,1,4,3,[5,6]]
# L = [1,2,[3,4,[5,6]]]
# L1 = L
# L.append(5)
# L[2][2].append(7)
# print(L)
# print(L1)

淺拷貝 只拷貝外層列表 內(nèi)層列表跟隨原列表進(jìn)行改變

  • 淺拷貝只能拷貝外層內(nèi)容席怪,內(nèi)層內(nèi)容相當(dāng)于做了映射应闯;所以原變量外層變化時(shí),新變量不變化挂捻,原變量內(nèi)層變化時(shí)碉纺,新變量跟著變化
# L1 = copy.copy(L)
# L.append(5)
# L[2][2].append(7)
# print(L)
# print(L1)

深拷貝 深拷貝拷貝整個列表 不跟隨原列表進(jìn)行改變

# L1 = copy.deepcopy(L)
# L.append(5)
# L[2][2].append(7)
# print(L)
# print(L1)

元組的操作

元組的遍歷

for ... in

變量 = (值1,值2,值3...)
for 變量 in 元組:
    使用變量獲取元組的每個值
# t = (1,2,3,4)
# for val in t:
#     print(val)

while

i = 0
while i<len(元組):
    使用元組變量[i]訪問每個值
    i += 1
# t = (1,2,3,4)
# i = 0
# while i < len(t):
#     print(t[i])
#     i += 1

遍歷長度相同的多級元組

元組 = ((值1,值2...),(值1,值2...)...)
for 變量1,變量2.. in 元組:
    使用變量1和變量2
# t = ((1,2),(3,4),(5,6))
# for val,var in t:
#     print(val,var)

遍歷長度不同的多級元組

元組 = ((值1,值2...),(值1,值2...)...)
for 變量1 in 元組:
    for 變量2 in 變量1:
        使用變量2獲取每個值
# t = ((1,2),(3,4,5),(6,7))
# for val in t:
#     for var in val:
#         print(val,var)

元組的操作方法

index()

獲取指定值在元組中的索引值
格式:元組.index(值)
返回值:整數(shù)
print(t.index(2))

count()

計(jì)算某個值在元組中出現(xiàn)的次數(shù)
格式:元組.count(值)
返回值:整數(shù)
print(t.count(2))

元組推導(dǎo)式

  • 元組的推導(dǎo)式形式和列表的基本一致刻撒,唯一不一樣的是生成的不是一個新的元組骨田,而是一個生成器,生成器用for循環(huán)遍歷出數(shù)值

基本格式:

格式: 變量 = (i for i in 元組)
結(jié)果:不是元組而是一個生成器

帶條件格式:

格式: 變量 = (i for i in 元組 if 條件表達(dá)式)
結(jié)果:不是元組而是一個生成器

多循環(huán)推導(dǎo)式:

格式: 變量 = (x+y for x in 元組1 for y in 元組2)
結(jié)果:不是元組而是一個生成器   x+y可以是其他操作

帶條件的多循環(huán)推導(dǎo)式:

格式: 變量 = (x+y for x in 元組1 for y in 元組2 if 條件表達(dá)式)
結(jié)果:不是元組而是一個生成器   x+y可以是其他操作
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末声怔,一起剝皮案震驚了整個濱河市态贤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌醋火,老刑警劉巖悠汽,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異芥驳,居然都是意外死亡柿冲,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門兆旬,熙熙樓的掌柜王于貴愁眉苦臉地迎上來假抄,“玉大人,你說我怎么就攤上這事丽猬∷薇ィ” “怎么了?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵宝鼓,是天一觀的道長刑棵。 經(jīng)常有香客問我,道長愚铡,這世上最難降的妖魔是什么蛉签? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮沥寥,結(jié)果婚禮上碍舍,老公的妹妹穿的比我還像新娘。我一直安慰自己邑雅,他們只是感情好片橡,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著淮野,像睡著了一般捧书。 火紅的嫁衣襯著肌膚如雪吹泡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天经瓷,我揣著相機(jī)與錄音爆哑,去河邊找鬼。 笑死舆吮,一個胖子當(dāng)著我的面吹牛揭朝,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播色冀,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼潭袱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了锋恬?” 一聲冷哼從身側(cè)響起屯换,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎伶氢,沒想到半個月后趟径,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘪吏,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡癣防,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掌眠。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蕾盯。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖蓝丙,靈堂內(nèi)的尸體忽然破棺而出级遭,到底是詐尸還是另有隱情,我是刑警寧澤渺尘,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布挫鸽,位于F島的核電站,受9級特大地震影響鸥跟,放射性物質(zhì)發(fā)生泄漏丢郊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一医咨、第九天 我趴在偏房一處隱蔽的房頂上張望枫匾。 院中可真熱鬧,春花似錦拟淮、人聲如沸干茉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽角虫。三九已至沾谓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間戳鹅,已是汗流浹背搏屑。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粉楚,地道東北人辣恋。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓,卻偏偏與公主長得像模软,于是被迫代替她去往敵國和親伟骨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 29,417評論 8 265
  • 這是過得最輕松愉快的一周燃异,在農(nóng)村生活三天携狭,體驗(yàn)不一樣的的生活,坐快艇回俐,開機(jī)動船逛腿,劃船打魚,上山撿菌仅颇,在朋友家看...
    呼吸_85ac閱讀 195評論 0 0
  • 今天睡了個懶覺单默,一覺醒來發(fā)現(xiàn)已經(jīng)被教師節(jié)快樂刷屏了,我猛然間覺得好像自己再去表達(dá)有點(diǎn)多余忘瓦,猶豫的時(shí)候搁廓,微信和QQ群...
    喜歡牛奶的魚兒閱讀 303評論 0 0
  • 有一種愛純潔無私、樸實(shí)無華耕皮,這就是母愛境蜕;有一種愛偉大神圣、博大精深凌停,這也是母愛粱年。母愛是人類亙古不變的話題,是愛...
    張思萌閱讀 230評論 0 0
  • 微信小程序getUserInfo獲取的省市信息是拼音罚拟,比如"Shenzhen"台诗,怎么轉(zhuǎn)成中文呢? 參考文檔:htt...
    疾風(fēng)勁草ccy閱讀 8,647評論 1 2