Python語言基礎(chǔ)學(xué)習(xí)筆記(2)——列表

其他相關(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'),其中的print即可以理解為輸出關(guān)鍵詞遂唧,它就不可以作為變量名芙代。
    ④為圖后續(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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末脑豹,一起剝皮案震驚了整個(gè)濱河市郑藏,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘩欺,老刑警劉巖必盖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異俱饿,居然都是意外死亡歌粥,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門拍埠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來失驶,“玉大人,你說我怎么就攤上這事枣购℃姨剑” “怎么了?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵棉圈,是天一觀的道長涩堤。 經(jīng)常有香客問我,道長分瘾,這世上最難降的妖魔是什么胎围? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮德召,結(jié)果婚禮上痊远,老公的妹妹穿的比我還像新娘。我一直安慰自己氏捞,他們只是感情好碧聪,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著液茎,像睡著了一般逞姿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捆等,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天滞造,我揣著相機(jī)與錄音,去河邊找鬼栋烤。 笑死谒养,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的明郭。 我是一名探鬼主播买窟,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼丰泊,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了始绍?” 一聲冷哼從身側(cè)響起瞳购,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎亏推,沒想到半個(gè)月后学赛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡吞杭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年盏浇,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芽狗。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡缠捌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出译蒂,到底是詐尸還是另有隱情,我是刑警寧澤谊却,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布柔昼,位于F島的核電站,受9級特大地震影響炎辨,放射性物質(zhì)發(fā)生泄漏捕透。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一碴萧、第九天 我趴在偏房一處隱蔽的房頂上張望乙嘀。 院中可真熱鬧,春花似錦破喻、人聲如沸虎谢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽婴噩。三九已至,卻和暖如春羽德,著一層夾襖步出監(jiān)牢的瞬間几莽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工宅静, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留章蚣,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓姨夹,卻偏偏與公主長得像纤垂,于是被迫代替她去往敵國和親矾策。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348

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