個(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)容需完全掌握辉浦。