python學(xué)習(xí)筆記(二)列表和元組

個(gè)人筆記邻薯,僅供參考

二、列表和元組

1乘凸、序列概述

python內(nèi)置了多種序列厕诡,本章重點(diǎn)討論其中最常用的兩種:列表元組。另一種重要的序列是字符串营勤。

列表和元組主要的不同在于灵嫌,列表是可以修改的,而元組不行葛作。所以列表適用于需要中途添加元素的情況寿羞,而元組適用于需要禁止修改的情況。

2进鸠、通用的序列操作

索引稠曼,切片,相加客年,相乘和成員資格檢查

2.1索引

序列中的所有元素都有編號——從0開始遞增霞幅。可以使用編號來訪問各個(gè)元素

>>> greeting = 'hello'
>>> greeting[0]
'h'

tips:可以使用負(fù)數(shù)索引來訪問倒數(shù)的元素量瓜,例如-1可以訪問倒數(shù)第一個(gè)元素

對字符串也可以使用索引:

>>> 'Hello'[1]
'e'

或者函數(shù)調(diào)用返回序列司恳,可以直接對其執(zhí)行索引操作。

>>> fourth = input('Year: ')[3]
Year: 2005
>>> fourth
'5'

2.2切片

切片可以訪問特定范圍內(nèi)的元素绍傲。為此扔傅,可使用兩個(gè)索引,并用冒號分隔

>>> numbers = [1,2,3,4,5,6,7,8,9,10]
>>> numbers[3:6]
[4, 5, 6]

注意:前面索引是包含在切片內(nèi)的而后面的索引不包含

可以使用一個(gè)索引來從頭開始或者切到最后

>>> numbers[:6]
[1, 2, 3, 4, 5, 6]
>>> numbers[3:]
[4, 5, 6, 7, 8, 9, 10]

或者省略兩個(gè)索引來復(fù)制整個(gè)序列

>>> numbers[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

切片操作時(shí)可以指定第三個(gè)參數(shù)——步長

>>> numbers[0:10:2]
[1, 3, 5, 7, 9]

默認(rèn)的步長為1烫饼,這里改為了2猎塞,即隔一個(gè)元素取一個(gè)值

還可以設(shè)置負(fù)數(shù)步長,從右向左提取元素,但索引要反過來寫

>>> numbers[8:3:-1]
[9, 8, 7, 6, 5]
>>> numbers[10:0:-2]
[10, 8, 6, 4, 2]
>>> numbers[0:10:-2]
[]
>>> numbers[::-2]
[10, 8, 6, 4, 2]
>>> numbers[5::-2]
[6, 4, 2]
>>> numbers[:5:-2]
[10, 8]

使用這種方法要注意索引

2.3序列相加

可以使用加法運(yùn)算來拼接序列

>>> [1,2,3] + [4,5,6]
[1, 2, 3, 4, 5, 6]
>>> 'Hello,' + 'world!'
'Hello,world!'
>>> [1,2,3] + 'world'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list

注意:只有同類型的序列才可以相加

2.4杠纵、乘法

>>> 'python' * 5
'pythonpythonpythonpythonpython'
>>> [42] *5
[42, 42, 42, 42, 42]

2.4.1荠耽、none、空列表和初始化

空列表是使用不包含任何內(nèi)容的兩個(gè)方括號表示的比藻,如果要?jiǎng)?chuàng)建一個(gè)10個(gè)元素的列表铝量,但沒有什么內(nèi)容,可以使用乘法創(chuàng)建

>>> sequence = [None] * 10
>>> sequence
[None, None, None, None, None, None, None, None, None, None]

2.5成員資格

要檢查特定的值是否包含在序列中银亲,可使用運(yùn)算符in慢叨。

>>> permissions = 'rw'
>>> 'r' in permissions
True
>>> 'x' in permissions
False

2.5.1長度、最小值和最大值

使用內(nèi)置函數(shù)len务蝠、min拍谐、max

>>> numbers = [100,34,678]
>>> len(numbers)
3
>>> min(numbers)
34
>>> max(numbers)
678

3、列表:python的主力

3.1轩拨、函數(shù)list

將參數(shù)拆成列表

>>> list('Hello')
['H', 'e', 'l', 'l', 'o']

注意:可以將任何序列作為list的參數(shù)

3.2力穗、基本的列表操作

3.2.1、修改列表:給元素賦值

>>> x = [1,1,1]
>>> x[1] = 2
>>> x
[1, 2, 1]

3.2.2气嫁、刪除元素

使用del語句即可

>>> names = ['Alice','Beth','Cecil','Dee-Dee','Earl']
>>> del names[2]
>>> names
['Alice', 'Beth', 'Dee-Dee', 'Earl']

del語句還可用于刪除其他東西

3.2.3給切片賦值

>>> name = list('perl')
>>> name
['p', 'e', 'r', 'l']
>>> name[2:] = list('ar')
>>> name
['p', 'e', 'a', 'r']

由以上代碼可知当窗,可同時(shí)給多個(gè)元素賦值。切片賦值可將切片替換為長度與其不同的序列,如下:

>>> name = list('Perl')
>>> name[1:] = list('ython')
>>> name
['P', 'y', 't', 'h', 'o', 'n']

使用切片賦值還可以在不替換原有元素的情況下插入新元素

>>> numbers = [1,5]
>>> numbers[1:1] = [2,3,4]
>>> numbers
[1, 2, 3, 4, 5]

這里寸宵,我“替換”了一個(gè)空切片崖面,相當(dāng)于插入了一個(gè)序列√萦埃可以使用相反的措施來刪除切片

>>> numbers
[1, 2, 3, 4, 5]
>>> numbers[1:4] = []
>>> numbers
[1, 5]

4巫员、列表方法

4.1、append()

方法append可以將一個(gè)對象添加到列表末尾

>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]

4.2甲棍、clear

方法clear就地清空列表

>>> lst = [1,2,3]
>>> lst.clear()
>>> lst
[]

4.3简识、copy

方法copy復(fù)制列表。常規(guī)復(fù)制只是將另一個(gè)名稱關(guān)聯(lián)到列表感猛,而copy則是創(chuàng)建副本

>>> a = [1,2,3]
>>> b = a
>>> b[1] = 4
>>> a
[1, 4, 3]

如上七扰,常規(guī)方法會(huì)動(dòng)原列表

>>> a = [1,2,3]
>>> b = a.copy()
>>> b[1]=4
>>> a
[1, 2, 3]

4.4、count

方法count計(jì)算指定的元素在列表中出現(xiàn)了多少次陪白。

>>> x = [[1,2],1,1,[2,1,[1,2]]]
>>> x.count(1)
2
>>> x.count([1,2])
1

4.5颈走、extend

用于同時(shí)將多個(gè)值附加到列表末尾,可將這些值組成序列當(dāng)作參數(shù)

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]

注意咱士,常規(guī)的加法效果不一樣

>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a + b
[1, 2, 3, 4, 5, 6]
>>> a
[1, 2, 3]

這里a沒有被修改

4.6立由、index

方法index在列表中查找指定值第一次出現(xiàn)的索引

>>> knights = ['we','are','the','knights','who','say','ni']
>>> knights.index('who')
4

搜索列表中沒有的值會(huì)報(bào)錯(cuò)

4.7、insert

方法insert用于將一個(gè)對象插入列表

>>> numbers = [1,2,3,4,5,6,7]
>>> numbers.insert(3,'four')
>>> numbers
[1, 2, 3, 'four', 4, 5, 6, 7]

4.8序厉、pop

pop從列表中刪除一個(gè)元素锐膜,并返回這一元素。

>>> x = [1,2,3]
>>> x.pop()
3
>>> x
[1, 2]
>>> x.pop(0)
1
>>> x
[2]
>>> x = [1,2,3]
>>> x.append(x.pop())
>>> x
[1, 2, 3]

4.9弛房、remove

方法remove用于刪除第一個(gè)為指定值的元素

>>> x = [1,2,3,4,5]
>>> x.remove(1)
>>> x
[2, 3, 4, 5]

4.10道盏、reverse

方法reverse按相反的順序排列列表中的元素

>>> x = [1,2,3]
>>> x.reverse()
>>> x
[3, 2, 1]

4.11、sort

sort用于對列表就地排序庭再,會(huì)對原來的列表進(jìn)行修改捞奕。

>>> x = [4,6,2,1,7,9]
>>> x.sort()
>>> x
[1, 2, 4, 6, 7, 9]

為獲取排序后的列表的副本牺堰,使用函數(shù)sorted

>>> x = [4,6,2,1,7,9]
>>> y = sorted(x)
>>> x
[4, 6, 2, 1, 7, 9]
>>> y
[1, 2, 4, 6, 7, 9]

這個(gè)函數(shù)可用于任何序列拄轻,但總是返回一個(gè)列表

>>> sorted('python')
['h', 'n', 'o', 'p', 't', 'y']

5、元組:不可修改的序列

>>> 1,2,3
(1, 2, 3)

如你所見伟葫,元組用圓括號括起恨搓。

注意:即使只有一個(gè)值,也要使用逗號

函數(shù)tuple可以將一個(gè)序列轉(zhuǎn)換為元組。

>>> tuple([1,2,3])
(1, 2, 3)

6斧抱、小結(jié)

函數(shù) 描述
len(seq) 返回序列的長度
list(seq) 將序列轉(zhuǎn)換為列表
max(args) 返回序列或一組參數(shù)中的最大值
min(args) 返回序列或一組參數(shù)中的最小值
reversed(seq) 讓你能反向迭代序列
sorted(seq) 返回一個(gè)有序列表常拓,其中包含指定序列的所有元素
tuple(seq) 將序列轉(zhuǎn)換為元組

列表和元組都是python開發(fā)中使用頻繁的序列,此內(nèi)容需完全掌握辉浦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弄抬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子宪郊,更是在濱河造成了極大的恐慌掂恕,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弛槐,死亡現(xiàn)場離奇詭異懊亡,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)乎串,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評論 3 395
  • 文/潘曉璐 我一進(jìn)店門店枣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人叹誉,你說我怎么就攤上這事鸯两。” “怎么了长豁?”我有些...
    開封第一講書人閱讀 165,830評論 0 356
  • 文/不壞的土叔 我叫張陵甩卓,是天一觀的道長。 經(jīng)常有香客問我蕉斜,道長逾柿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,957評論 1 295
  • 正文 為了忘掉前任宅此,我火速辦了婚禮机错,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘父腕。我一直安慰自己弱匪,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評論 6 393
  • 文/花漫 我一把揭開白布璧亮。 她就那樣靜靜地躺著萧诫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪枝嘶。 梳的紋絲不亂的頭發(fā)上帘饶,一...
    開封第一講書人閱讀 51,754評論 1 307
  • 那天,我揣著相機(jī)與錄音群扶,去河邊找鬼及刻。 笑死镀裤,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缴饭。 我是一名探鬼主播暑劝,決...
    沈念sama閱讀 40,464評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼颗搂!你這毒婦竟也來了担猛?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,357評論 0 276
  • 序言:老撾萬榮一對情侶失蹤丢氢,失蹤者是張志新(化名)和其女友劉穎毁习,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體卖丸,經(jīng)...
    沈念sama閱讀 45,847評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纺且,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了稍浆。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片载碌。...
    茶點(diǎn)故事閱讀 40,137評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖衅枫,靈堂內(nèi)的尸體忽然破棺而出嫁艇,到底是詐尸還是另有隱情,我是刑警寧澤弦撩,帶...
    沈念sama閱讀 35,819評論 5 346
  • 正文 年R本政府宣布步咪,位于F島的核電站,受9級特大地震影響益楼,放射性物質(zhì)發(fā)生泄漏猾漫。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評論 3 331
  • 文/蒙蒙 一感凤、第九天 我趴在偏房一處隱蔽的房頂上張望悯周。 院中可真熱鬧,春花似錦陪竿、人聲如沸禽翼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,023評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽闰挡。三九已至,卻和暖如春礁哄,著一層夾襖步出監(jiān)牢的瞬間长酗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,149評論 1 272
  • 我被黑心中介騙來泰國打工姐仅, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留花枫,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評論 3 373
  • 正文 我出身青樓掏膏,卻偏偏與公主長得像劳翰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子馒疹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評論 2 355

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

  • 列表: 前面已經(jīng)用了很多次列表佳簸,可以看出列表的功能是比較強(qiáng)大的。本節(jié)將討論列表不同于元組和字符串的地方:列表的內(nèi)容...
    瀧汰泱閱讀 1,245評論 0 1
  • 本章將介紹一個(gè)新概念:數(shù)據(jù)結(jié)構(gòu)颖变。數(shù)據(jù)結(jié)構(gòu)是以某種方式(如通過編號)組合起來的數(shù)據(jù)元素(如數(shù)生均、字符乃至其他數(shù)據(jù)結(jié)構(gòu))...
    Colleen_oh閱讀 546評論 0 0
  • 數(shù)據(jù)結(jié)構(gòu),是指通過某種方式(例如對元素進(jìn)行編號)組織在一起的數(shù)據(jù)元素的集合腥刹,這些數(shù)據(jù)元素可以是數(shù)字或者字符马胧,甚至可...
    千釋炎閱讀 777評論 0 0
  • 概述 列表、元組和字符串同屬于序列的一種衔峰,都有序列的特點(diǎn)佩脊,每個(gè)元素都有編號,即其位置或索引垫卤,其中第一個(gè)元素...
    李樹濤閱讀 691評論 0 1
  • 元組(tuple): 元組常用小括號表示,即:()评抚,元素加逗號豹缀,是元組的標(biāo)識。 #定義一個(gè)元組 #tuple = ...
    徐冕閱讀 1,242評論 0 0