python(16)-列表list,for循环
高級(jí)數(shù)據(jù)類(lèi)型--列表
- 1列表定義
- 2列表中取值
- 3列表的增,刪,查,改
- 3.1修改指定位置的數(shù)據(jù)
- 3.2確定指定元素的索引
- 3.3增加操作
- 3.4刪除操作
- 3.5 元素是否存在與列表中 in
- 3.6在指定索引位置插入元素
- 4列表的數(shù)據(jù)統(tǒng)計(jì)
- 5列表排序
- 6列表的循環(huán)遍歷-for
- 7.多維度list 的切片操作
非數(shù)值類(lèi)型:列表,元祖,字典,字符串,都是Python中的高級(jí)變量類(lèi)型
Python中的非數(shù)值類(lèi)型都支持一些共同的操作:都是一個(gè)序列,也可以理解為容器,用來(lái)裝東西用
列表數(shù)據(jù)類(lèi)型的應(yīng)用場(chǎng)景:存儲(chǔ)多個(gè)相同類(lèi)型的數(shù)據(jù),通過(guò)迭代遍歷,針對(duì)每一項(xiàng)元素,執(zhí)行相同的操作
注意: 列表中可以存不同類(lèi)型的數(shù)據(jù),但是一般不這么用。
Python中的列表由于其靈活的操作,既可實(shí)現(xiàn)堆棧操作(先進(jìn)后出),還可實(shí)現(xiàn)隊(duì)列操作(先進(jìn)先出)
1列表定義
列表-在其他語(yǔ)言中等價(jià)于數(shù)組,用于存儲(chǔ)一串信息
記錄三個(gè)人的名字,可以 用三個(gè)字符串變量存儲(chǔ),也可以用一個(gè)列表存儲(chǔ)多個(gè)變量
name_list=[“zhangsan”,“l(fā)isi”,“wangwu”]
用[]定義列表,其中元素用逗號(hào),分隔
2列表中取值
利用索引取出列表中的元素,索引超出范圍,程序會(huì)報(bào)錯(cuò)
name_list[1]
zhangsan
3列表的增,刪,查,改
列表的常用操作包括 :增,刪,查,改。可以通過(guò)函數(shù)和方法兩種方式來(lái)執(zhí)行常用操作:函數(shù)通過(guò)函數(shù)名()調(diào)用,方法通過(guò)變量名.方法名調(diào)用
3.1修改指定位置的數(shù)據(jù)
name_list[1]=‘lisisi’
3.2確定指定元素的索引
name_list.index(“l(fā)isi”)
使用index方法需要注意,如果傳遞的數(shù)據(jù)不在列表中,程序會(huì)報(bào)錯(cuò)
3.3增加操作
1.向列表的末尾追加數(shù)據(jù)
name_list.append(“wangxiaoer”)
2.在列表的指定索引位置添加一個(gè)數(shù)據(jù)(添加在0,1之間)
name_list.insert(1,“xiaomeiemi”)
3.將可以迭代的數(shù)據(jù)增加到當(dāng)前對(duì)象的末尾
temp_list=[“sunwukong”,“zhuerge”,“sanshidia”]
name_list.extend(temp_list)
3.4刪除操作
1.刪除指定的數(shù)據(jù),當(dāng)列表中有多個(gè)“zhangsan”,會(huì)刪掉一個(gè)第一個(gè)指定數(shù)據(jù)
name_list.remove(“wangwu”)
2.pop默認(rèn)可以將列表中最后一個(gè)元素刪除
name_list.pop()
pop方法可以指定索引,刪除元素,同時(shí)可以將彈出的元素返回
a=name_list.pop(3)
3.claer方法將列表清空呢
name_list.clear()
name_list=[]
Python2.7版本的編譯器中沒(méi)有這個(gè)方法偶,如果有,會(huì)將列表清空呢
4.擴(kuò)展: Del 從列表中刪除數(shù)據(jù),用于刪除指定索引的元素
del name_list[1]
del本質(zhì)上是將變量從內(nèi)存中刪除,如果使用del刪除了一個(gè)變量,那么后續(xù)就不能使用該變量。慎重使用
3.5 元素是否存在與列表中 in
3.6在指定索引位置插入元素
list.insert(index, obj)
4列表的數(shù)據(jù)統(tǒng)計(jì)
數(shù)據(jù)統(tǒng)計(jì)操作包括一個(gè)函數(shù)一個(gè)方法
1.統(tǒng)計(jì)列表數(shù)據(jù)保存了多少個(gè)數(shù)據(jù),列表數(shù)據(jù)的長(zhǎng)度
list_len=len(name_list)
print(“列表中包含:%d”%list_len)
2.統(tǒng)計(jì)某個(gè)數(shù)據(jù)出現(xiàn)的次數(shù)
count=name_list.count(“zhangsan”)
print(“zhangsan 出現(xiàn)了:%d”%count)
5列表排序
新定義兩個(gè)列表:
name_list=[“zhangsan”,“l(fā)isi”,“wangwu”,“wangxiaoer”]
num_list=[6,8,4,1,10]
默認(rèn)升序排序,字符串按首字母的順序a-z
name_list.sort()
num_list.sort()
降序輸出
name_list.sort(reverse=True)
num_list.sort(reverse=True)
翻轉(zhuǎn)(逆序)
name_list.reverse()
num_list.reverse()
翻轉(zhuǎn)列表一部分內(nèi)容
#to reverse a part of the string in place
a = [1,2,3,4,5]
a[2:4] = reversed(a[2:4]) # This works!
a[2:4] = [0,0] # This works too.
a[2:4].reverse() # But this doesn’t work
參考資料:https://cloud.tencent.com/developer/ask/53697
索引實(shí)現(xiàn)列表逆序
a=[1,2,3,4,5]
a[::-1] # 為a[i:j:s]的缺省表示,i=0,j=len(a),s=-1
參考博文:https://blog.csdn.net/marraybug/article/details/85163484
lambda表達(dá)式在sort函數(shù)中的使用
假如a是一個(gè)由元組構(gòu)成的列表,對(duì)該列表進(jìn)行排序時(shí),我們需要用到參數(shù)key,也就是關(guān)鍵詞,如下面代碼所示,lambda是一個(gè)匿名函數(shù),是固定寫(xiě)法;x表示匿名函數(shù)的輸入,即列表中的一個(gè)元素,在這里,表示一個(gè)元組,x只是臨時(shí)起的一個(gè)名字,你可以使用任意的名字;x[0]表示匿名函數(shù)的輸出,即元組里的第一個(gè)元素,即key = x[0];所以這句命令的意思就是按照列表中第一個(gè)元素進(jìn)行排序。
a = [(‘b’, 4), (‘a(chǎn)’, 12), (‘d’, 7), (‘h’, 6), (‘j’, 3)]
a.sort(key=lambda x: x[0])
print(a)
#輸出
[(‘a(chǎn)’, 12), (‘b’, 4), (‘d’, 7), (‘h’, 6), (‘j’, 3)]
參考博文:https://www.cnblogs.com/lovewhale1997/p/11424429.html
6列表的循環(huán)遍歷-for
循環(huán)遍歷:從頭到為 依次從列表中獲取數(shù)據(jù),在循環(huán)體內(nèi)部對(duì)每個(gè)元素執(zhí)行相同的操作。為了提高列表的遍歷效率,專(zhuān)門(mén)提供了迭代interation遍歷,For能夠?qū)崿F(xiàn)迭代遍歷。
name_list=["zhangsan","lisi","wangwu","wangxiaoer"] for my_name in name_list:print("我的名字叫:%s"%my_name)順序的從列表中依次獲取數(shù)據(jù),每一次循環(huán)過(guò)程中,數(shù)據(jù)都會(huì)保存在my_name
通過(guò)my_name這個(gè)變量中,每次在循環(huán)體內(nèi)部都可以訪問(wèn)當(dāng)前這一次獲取到的數(shù)據(jù)
for my_name in name_list(要遍歷的列表變量):
優(yōu)點(diǎn):不需要設(shè)計(jì)計(jì)數(shù)器,也不需要對(duì)計(jì)數(shù)器進(jìn)行操作
#6鏈表的加法
兩個(gè)鏈表相加,實(shí)現(xiàn)兩個(gè)鏈表的拼接:
[1,2]+[3,4]
輸出:[1, 2, 3, 4]
7.多維度list 的切片操作
>>> a = [[1,2,3],[4,5,6],[7,8,9]] >>> a // 沒(méi)有size,和shape方法 [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> a[0] [1, 2, 3] >>> a[0][0] 1 >>> a[:2] // 結(jié)果是一個(gè)list ,再次切片也只是對(duì)于第0維度的一個(gè)切片 [[1, 2, 3], [4, 5, 6]] >>> a[:][0] // 并不是想要的所有行,第0列[1,4,7],想要實(shí)現(xiàn)這個(gè)切片操作,可以將其轉(zhuǎn)換為numpy數(shù)組再操作 [1, 2, 3]轉(zhuǎn)換成numpy數(shù)組,拼接時(shí)沒(méi)有l(wèi)ist.append()那么直接,需要用numpy.concatenate()進(jìn)行拼接,但是這個(gè)拼接維度的數(shù)量不會(huì)增加,如果需要多增加一個(gè)維度,可以使用[array1,array2,array3]再轉(zhuǎn)tensor/array的方法進(jìn)行操作。
總結(jié)
以上是生活随笔為你收集整理的python(16)-列表list,for循环的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 算法(8)-leetcode-explo
- 下一篇: 《Python Cookbook 3rd