其他相關(guān)系列文章:
Python語言基礎(chǔ)學(xué)習(xí)筆記(1)——變量础钠、字符串
1列表的介紹
什么是列表
names = ['zhangsan','lisi','wangma',12,18,54]
首先從格式上來講甥雕,前面有一個(gè)單詞names
盏道,為列表名;有一個(gè)=
可以理解為賦值互艾;后面有一對中括號,將內(nèi)部的元素括起來讯泣,并且每一元素之間用,
分割纫普;列表內(nèi)的字符串需要用引號括起來。
- 列表的定義:由一系列特定順序排列的元素組成,列表名命名的規(guī)則與變量相同昨稼。列表內(nèi)可以加入任何信息节视。
- 列表的形式:在python中,使用
[]
來表示列表寻行,并用(英文狀態(tài)下的 , )
來分割其中的元素。
- 回顧變量的命名規(guī)則
①變量名只能包含字母匾荆、數(shù)字拌蜘、下劃線。其中牙丽,變量名的開頭可以是字母或者是下劃線简卧,但不能是數(shù)字。
②變量名不能包含空格烤芦,但可以使用下劃線分割其中的單詞举娩。例如:變量名可以是first_name
,last_name
,但不能是first name
,last name
构罗。
③不能將python的關(guān)鍵詞和函數(shù)名作為變量名稱铜涉。例如:初學(xué)者第一步一般都是寫一句print('hello world')
,其中的
④為圖后續(xù)方便和容易理解,變量名應(yīng)該設(shè)置的簡短且具有描述性蠢箩。例如链蕊,如果需要一個(gè)關(guān)于演員的變量,可以將變量命名為actor
谬泌;如果需要一個(gè)關(guān)于電影的變量滔韵,可以將變量命名為movie
;
在定義中有提到掌实,列表內(nèi)可以加入任何信息陪蜻。詳細(xì)來講,列表內(nèi)可以加入任何數(shù)據(jù)類型贱鼻,字符串宴卖、數(shù)字、以及后續(xù)接觸到的所有數(shù)據(jù)類型邻悬,甚至是內(nèi)嵌一個(gè)列表症昏,這樣也是合理的,例如父丰,如下在列表names中又嵌入一個(gè)列表:
names = ['zhangsan','lisi','wangma',12,18,54,[1,2,3,'qi','yuan']]
列表的初步使用
列表的輸出使用和前章所講賦值后的變量的使用有些類似肝谭,通過print可以直接輸出列表。
names_age = ['zhangsan','lisi','wangma',12,18,54]
print(names_age)
輸出結(jié)果為
['zhangsan','lisi','wangma',12,18,54]
可見,輸出內(nèi)容和列表中的內(nèi)容是一樣的攘烛,也就是輸出了列表中的所有內(nèi)容魏滚。
2列表元素的訪問
- (此小節(jié)以之前所講字符串的切片和索引為基礎(chǔ))
列表是有序集合,因此要訪問列表的任何元素坟漱,只需要將該元素的索引告訴python程序即可鼠次。
names_age = ['zhangsan','lisi','wangma',12,18,54]
print(names_age[2])
輸出結(jié)果為:
wangma
再次強(qiáng)調(diào),在python中芋齿,第一個(gè)列表元素的索引為0腥寇,而不是1
- 在列表元素的使用中,也可以使用之前所講字符串方法沟突,將元素進(jìn)行轉(zhuǎn)換花颗。
例如:將首字母變?yōu)榇髮懀谧址惺褂玫氖?title()惠拭,在此舉例
names_age = ['zhangsan','lisi','wangma',12,18,54]
print(names_age[2].title())
輸出結(jié)果為
Wangma
對于最后一個(gè)列表元素的訪問扩劝,python提供了一種便利語法,通過將索引指定為-1即可
names_age = ['zhangsan','lisi','wangma',12,18,54,1,2,3,4,5,6,7,8,9,11,13]
print(names_age[-1])
執(zhí)行后會(huì)輸出:
13
可以使用拼接合并职辅,利用列表中的元素棒呛,創(chuàng)造一個(gè)消息,例如:
names_age = ['zhangsan','lisi','wangma',12,18,54,1,2,3,4,5,6,7,13]
message = 'your name is ' + name_age[0] + '.'
print(message)
輸出結(jié)果為
your name is zhangsan.
3修改域携、添加和刪除列表元素
大多數(shù)所創(chuàng)建的列表都是動(dòng)態(tài)的簇秒,也就意味著,可以對已經(jīng)創(chuàng)建的列表進(jìn)行修改秀鞭、添加趋观、刪除元素。
修改
列表修改元素其實(shí)是和訪問一個(gè)元素是類似的锋边。
例如皱坛,想要把現(xiàn)有元素中的wangma修改成wangwuwu:
names_age = ['zhangsan','lisi','wangma',12,18,54]
names_age[2] = 'wangwuwu'
print(names_age)
輸出結(jié)果為
['zhangsan','lisi','wangwuwu',12,18,54]
可以看到,新輸出的為更改后的元素豆巨。若要修改元素剩辟,直接將想要修改的值,賦值給索引即可往扔、
添加
在列表中添加元素需要使用append()函數(shù)贩猎,這個(gè)函數(shù)可以在列表的末尾,添加一個(gè)元素萍膛。
例如吭服,想要在元素末尾添加一個(gè)10000:
names_age = ['zhangsan','lisi','wangma',12,18,54]
names_age.append(10000)
print(names_age)
輸出結(jié)果為:
['zhangsan','lisi','wangma',12,18,54,10000]
插入
在大多數(shù)情況下,不一定是要在列表的末尾加元素蝗罗,因此還提供了一種在列表中插入元素的函數(shù)艇棕。也就是insert()函數(shù)麦到,可以在想要插入的位置,插入一個(gè)元素欠肾。
例如,想在zhangsan后面插入zhangwu:
names_age = ['zhangsan','lisi','wangma',12,18,54]
names_age.insert(1,zhangwu)
print(names_age)
輸出結(jié)果為:
['zhangsan','zhangwu','lisi','wangma',12,18,54]
即成功的在索引號為1的位置拟赊,插入了zhangwu
刪除
在列表中刺桃,刪除的方法,在這里介紹三種
del方法
例如,想通過del函數(shù)吸祟,刪除zhangwu
names_age = ['zhangsan','zhangwu','lisi','wangma',12,18,54]
del names_age[1]
print(names_age)
輸出結(jié)果為
['zhangsan','lisi','wangma',12,18,54]
pop()方法
例如想要?jiǎng)h除lisi瑟慈,使用pop()方法為:
names_age = ['zhangsan','zhangwu','lisi','wangma',12,18,54]
name = name_age.pop(2)
print(names_age)
輸出結(jié)果為:
['zhangsan','zhangwu','wangma',12,18,54]
而通過輸出打印變量name可以發(fā)現(xiàn)這種方法和上述del方法的區(qū)別
print(names)
輸出結(jié)果為
lisi
輸出的結(jié)果就是被刪除的字符串的信息,它把要?jiǎng)h除的數(shù)據(jù)臨時(shí)保存下來屋匕,后續(xù)如果需要葛碧,還能繼續(xù)使用,而del是將數(shù)據(jù)徹底刪除过吻。
remove()方法
當(dāng)你不知道要從列表中刪除的元素的位置時(shí)进泼,可以使用這個(gè)函數(shù)來刪除指定元素。
names_age = ['zhangsan','zhangwu','lisi','wangma',12,18,54]
name_age.remove(‘lisi’)
print(names_age)
輸出結(jié)果為
['zhangsan','zhangwu','wangma',12,18,54]
實(shí)現(xiàn)了直接知道元素信息纤虽,將元素進(jìn)行刪除乳绕,而不需要知道元素位置。
4組織列表
當(dāng)我們創(chuàng)建完列表之后逼纸,列表元素的順序常常都是無規(guī)律的洋措,但有時(shí)會(huì)以特定的順序來呈現(xiàn)一個(gè)信息。
在這里杰刽,主要介紹四種列表組織方式菠发。需要注意各個(gè)函數(shù)的使用方法不一。
使用sort()函數(shù)對列表進(jìn)行永久性排序
sort()函數(shù):將列表中的元素按照字母順序排列(只能對字符串進(jìn)行排列)
例如
names_age = ['zhangsan','zhangwu','lisi','wangma']
names_age.sort()
print(names_age)
輸出結(jié)果為:
['lisi','wangma','zhangsan','zhangwu']
使用sorted()函數(shù)對列表進(jìn)行臨時(shí)排序
sorted()函數(shù):不改變原來實(shí)際排列順序贺嫂,同時(shí)給出按照字母順序排列的臨時(shí)列表
例如滓鸠,想要對比看一下sorted()函數(shù)的臨時(shí)排序情況,方便對比涝婉,輸出三次哥力,第一次為使用臨時(shí)排序后,第二次為輸出列表墩弯,第三次為使用sort()函數(shù)輸出吩跋。
names_age = ['zhangsan','zhangwu','lisi','wangma']
print(sorted(name_age)) #臨時(shí)排序
print(names_age) #真實(shí)列表、原列表
names_age.sort()
print(names_age) #完全改變內(nèi)容順序
輸出結(jié)果為
['lisi','wangma','zhangsan','zhangwu']
['zhangsan','zhangwu','lisi','wangma']
['lisi','wangma','zhangsan','zhangwu']
可見渔工,第二次輸出的列表依然是前期原列表锌钮,并未進(jìn)行改變,第一次輸出僅僅是臨時(shí)排序后輸出引矩。
使用reverse()函數(shù)對列表進(jìn)行倒著打印
reverse()函數(shù):永久性的反轉(zhuǎn)列表元素的排列順序梁丘,可以通過再次使用該函數(shù)侵浸,恢復(fù)到原來的排列順序。
names_age = ['zhangsan','zhangwu','lisi','wangma']
names_age.reverse()
print(names_age)
輸出結(jié)果為:
['wangma','lisi','zhangwu','zhangsan']
使用len()函數(shù)確定列表的長度
len()函數(shù):快速獲取列表的長度
names_age = ['zhangsan','zhangwu','lisi','wangma']
print(len(names_age))
輸出結(jié)果為
4
5遍歷列表
使用for循環(huán)氛谜,依次訪問列表的元素
前期講過通過索引號來訪問列表掏觉,而索引號太過復(fù)雜,因此需要for循環(huán)值漫。
for循環(huán)舉例:
names = ['zhang','wu','li','wang','zhao']
for name in names:
print(name) #注意print前空一個(gè)Tab
上述for循環(huán)代碼澳腹,第一行定義列表names,將后面的元素賦值給names杨何;第二行使用for循環(huán)來遍歷names酱塔,其中的name是新定義的一個(gè)變量名,names是列表名危虱,后面一定要記得需要一個(gè)冒號羊娃;第三行首先需要一個(gè)Tab鍵,然后將變量輸出埃跷。方便理解蕊玷,遍歷的意思即為:按順序訪問每一個(gè)。
它的運(yùn)行原理是捌蚊,首先將列表中的第一個(gè)元素賦值給變量name集畅,然后輸出name,然后第二個(gè)元素缅糟。挺智。。循環(huán)如此窗宦。
上面for循環(huán)輸出結(jié)果為
zhang
wu
li
wang
zhao
上述運(yùn)行的原始代碼中赦颇,第二行與第三行是一個(gè)for循環(huán)整體,如果循環(huán)結(jié)束赴涵,可以在第四行加入一條語句媒怯,終結(jié)程序,且僅僅運(yùn)行一次髓窜。如下所示:
names = ['zhang','wu','li','wang','zhao']
for name in names:
print(name) #注意print前空一個(gè)Tab
print('print end')
運(yùn)行結(jié)果為:
zhang
wu
li
wang
zhao
print end
如果將其與第三行對齊扇苞,加入for循環(huán)之中,測試如下
names = ['zhang','wu','li','wang','zhao']
for name in names:
print(name) #注意print前空一個(gè)Tab
print('print end')
輸出結(jié)果為
zhang
print end
wu
print end
li
print end
wang
print end
zhao
print end
因此寄纵,在以后的使用中鳖敷,要注意哪些是需要循環(huán)的,哪些是不需要循環(huán)的程拭。如果不需要循環(huán)定踱,就不需要一個(gè)Tab鍵。
6操作數(shù)值列表
數(shù)值列表恃鞋,即在一個(gè)列表中崖媚,他里面的元素都是由數(shù)值組成的
range()函數(shù):生成一系列數(shù)字亦歉,它里面包括三個(gè)參數(shù)
range(start,end,scan)
參數(shù)的含義:
start是計(jì)數(shù)開始的位置,默認(rèn)是從0開始
end是計(jì)數(shù)結(jié)束的位置
scan是每次跳躍的間距畅哑,默認(rèn)為1
例如:
for x in range(1,10):
print(x)
輸出結(jié)果為:
1
2
3
4
5
6
7
8
9
由此可見肴楷,輸出結(jié)果不包括end的參數(shù)10
如果range()函數(shù)內(nèi)只有一個(gè)參數(shù),則表示會(huì)產(chǎn)生從0開始計(jì)數(shù)到輸入?yún)?shù)(前一位整數(shù))結(jié)束的整數(shù)荠呐。如下
for x in range(10):
print(x)
輸出結(jié)果為
0
1
2
3
4
5
6
7
8
9
如果是3個(gè)參數(shù)阶祭,情況如下:
for x in range(1,10,3):
print(x)
輸出結(jié)果為:
1
4
7
如上所示,range()函數(shù)是為了創(chuàng)建一系列的數(shù)值直秆,但是并不能產(chǎn)生一個(gè)數(shù)值列表。使用range()創(chuàng)建數(shù)字列表鞭盟,需要使用list()函數(shù)圾结,將數(shù)據(jù)進(jìn)行轉(zhuǎn)化為列表。
例如:
numbers = list(range(1,10))
print(numbers)
輸出結(jié)果為
[1,2,3,4,5,6,7,8,9] #成功將這一組數(shù)值轉(zhuǎn)化為列表
- 小練習(xí):輸出10以內(nèi)所有奇數(shù)的平方
思路解析:首先需要一個(gè)空列表齿诉,并且使用for循環(huán)找到10以內(nèi)的奇數(shù)對其進(jìn)行賦值筝野,然后計(jì)算其平方,將結(jié)果添加進(jìn)另一個(gè)新列表中粤剧,循環(huán)結(jié)束后輸出新列表歇竟。
x = []
for x in range(1,10,2):
y.append(x**2)
print(y)
輸出結(jié)果為
[1,9,25,49,81]
若想要更簡單的代碼,python提供一種列表解析法抵恋。如下
y = [x**2 for x in range(1,10,2)]
print(y)
列表解析的工作原理焕议,首先將第一個(gè)值1賦值給x,x又將值賦值給它前面的x進(jìn)行平方運(yùn)算弧关,運(yùn)算結(jié)果作為第一個(gè)y值盅安,如此循環(huán)。
- 對數(shù)字列表進(jìn)行簡單的統(tǒng)計(jì)計(jì)算
min()函數(shù)世囊,求最小值
max()函數(shù)别瞭,求最大值
sun()函數(shù),求總和
例如:注意函數(shù)的使用方法
x = min(1,2,3,4,5,6)
y = max(1,2,3,4,5,6)
z = [1,2,3,4,5,6]
print(x)
print(y)
print(sum(z))
1
6
21
同樣min()和max()也可以改為sum()函數(shù)的使用方法株憾,如下
z = [1,2,3,4,5,6]
print(min(z))
print(max(z))
print(sum(z))
輸出結(jié)果為
1
6
21
7使用列表的一部分
- 處理列表的部分元素需要用到前期所講過的知識(shí)——切片
創(chuàng)建切片蝙寨,可以指定要使用的第一個(gè)元素和最后一個(gè)元素的索引。這點(diǎn)與range()相似
例如:
names = ['zhang','wu','li','wang','zhao']
print(names[1:3])
print(names[:3])
print(names[2:])
print(names[-3:])
輸出結(jié)果分別為:
需要注意的是嗤瞎,第一個(gè)元素索引號為0墙歪,結(jié)尾元素不會(huì)被輸出。
['wu', 'li']
['zhang', 'wu', 'li']
['li', 'wang', 'zhao']
['li', 'wang', 'zhao']
如果想要復(fù)制列表猫胁,可創(chuàng)建一個(gè)包含整個(gè)列表的切片箱亿,同時(shí)省略起始索引和終止索引([:])
例如:
names = ['zhang','wu','li','wang','zhao']
names2 = names[:]
print(names2)
輸出結(jié)果為:
['zhang','wu','li','wang','zhao']
8元組
當(dāng)我們需要一個(gè)不能被修改的列表時(shí),就需要用到元組弃秆。
元組是不可變的列表届惋,元組使用()來標(biāo)識(shí)
元組也可以通過索引來訪問其元素髓帽,也可以使用for循環(huán)遍歷元組中的所有值。
例如,嘗試修改元組中的數(shù)值:
tuple = (1,2,3,4,5,6,7)
tuple[2] = 100
print(tuple)
結(jié)果就會(huì)報(bào)錯(cuò)
Traceback (most recent call last):
File "tuple.py", line 2, in <module>
tuple[2] = 100
TypeError: 'tuple' object does not support item assignment