列表和元組
數據結構是通過某種方式(例如對元素進行編號)組織在一起的的數據元素的集合,這些元素可以是數字或者字符,甚至是其他數據結構。在python中,最基本的數據結構是序列。序列中的每一個元素被分配一個序列號——元素的位置,也稱爲索引。
序列通用操作
所有的序列都可以進行某些特定的操作,這些操作包括:索引(indexing)、分片(slicing)、加(adding)、乘(multipiying)、迭代(iteration)、計算長度、檢查某個元素是否屬於序列的成員、找出最大元素及最小元素的內建函數
- 索引
序列中的所有元素都是有編號的,從0開始遞增,可通過編號訪問元素。使用負索引時,python會從右邊,也就是最後一個元素開始計數,最後一個元素的位置編號是-1
>>> greeting = "hello"
>>> greeting[0]
'h'
>>> greeting[-1]
'o'
- 分片
a. 通過分片操作來訪問一定範圍內的元素,分片通過冒號隔開的兩個索引來實現。符合左閉右開原則,意思就是分片操作需要提供兩個索引作爲邊界,第一個索引的元素是包含在分片內的,而第二個則不在
>>> tag = "https://editor.csdn.net/"
>>> tag[8:23]
'editor.csdn.net'
>>> tag[8:24]
'editor.csdn.net/'
>>> tag[:8]
'https://'
>>> tag[8:]
'editor.csdn.net/'
>>> tag[:]
'https://editor.csdn.net/'
b. 更大的步長,步長不能爲0,但可以是負數,此時分片從右到左提取元素。
>>> numbers = [1,2,3,4,5,6,7,8,9]
>>> numbers[0:10:2]
[1, 3, 5, 7, 9]
>>> numbers[::4]
[1, 5, 9]
>>> numbers[::-2]
[9, 7, 5, 3, 1]
- 序列相加
兩種相同類型的序列才能進行鏈接操作
>>> [1,2,3]+[4,5,6]
[1, 2, 3, 4, 5, 6]
>>> "hello, "+"world!"
'hello, world!
- 乘法
用數字x乘以一個序列會生成新的序列,在新的序列中,原來的序列會被重複x次
>>> [42]* 5
[42, 42, 42, 42, 42]
- 成員資格
檢查一個值是否在序列中,可以使用in運算符
>>> permissions = "rw"
>>>> "w" in permissions
True
>>> "x" in permissions
False
- 長度,最小值和最大值
使用內建函數len、min、max。
>>> numbers = [1,2,6,8]
>>> len(numbers)
4
>>> min(numbers)
1
>>> max(numbers)
8
列表
列表可以使用所有適用於序列的標準操作
- 元素賦值
>>> x =[1,1,1]
>>> x[1] = 2
>>> x
[1, 2, 1]
- 刪除元素
>>> del x[1]
>>> x
[1, 1]
- 分片賦值
可以一次性爲多個元素賦值,可以在不需要替換任何原有元素的情況下插入新的元素,也可以通過分片賦值來刪除元素
>>> 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]
>>> numbers[1:4] = []
>>> numbers
[1, 5]
- 列表方法
- append
append方法用於在列表末尾追加新的對象
>>> lst = [1,2,3]
>>> lst.append(4)
>>> lst
[1, 2, 3, 4]
- count
count方法統計某個元素在列表中出現的次數
>>> x = [[1,2],1,2,[1]]
>>>> x.count(1)
1
- extend
extend方法可以在列表末尾一次性追加另一個序列的多個值
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a.extend(b)
>>> a
[1, 2, 3, 4, 5, 6]
extend方法看起來很像連接操作,區別在於,extend方法修改了被擴展的序列
>>> a = [1,2,3]
>>> b = [4,5,6]
>>> a+b
[1, 2, 3, 4, 5, 6]
>>> a
[1, 2, 3
- index
index方法用於從列表中找出某個值第一個匹配的索引位置
>>> lst = [1,2,3,4,5,4,3,2,1]
>>> lst.index(2)
1
>>> lst.(6)
File "<stdin>", line 1
lst.(6)
^
SyntaxError: invalid syntax
- insert
insert用於將對象插入到列表中
>>> lst.insert(-1,6)
>>> lst
[1, 2, 3, 4, 5, 4, 3, 2, 6, 1]
- pop
pop方法會移除列表中的一個元素(默認是最後一個),並且返回該元素的值
>>> lst
[1, 2, 3, 4, 5, 4, 3, 2, 6, 1]
>>> lst.pop()
1
>>> lst.pop(4)
5
>>> lst
[1, 2, 3, 4, 4, 3, 2, 6]
>>> lst.append(lst.pop())
>>> lst
[1, 2, 3, 4, 4, 3, 2, 6]
- remove
remove方法用於移除列表中某個值的第一個匹配項,沒有返回值
>>> lst.remove(2)
>>> lst
[1, 3, 4, 4, 3, 2, 6]
- reverse
reverse方法將列表的元素反向存放
>>> lst.reverse()
>>> lst
[6, 2, 3, 4, 4, 3, 1]
- sort
以默認的方式進行排序
>>> lst
[6, 2, 3, 4, 4, 3, 1]
>>> lst.sort()
>>> lst
[1, 2, 3, 3, 4, 4, 6]
元組:不可改變的序列
元組與列表一樣,也是一種序列。唯一的不同是元組不能修改,創建語法,用逗號分隔。因爲不可變的屬性,元組可以在映射時中當作鍵使用
>>> 1,2,3
(1, 2, 3)
>>> ()
()
>>> 42,
(42,)
- tuple函數
以一個序列爲參數並把它轉化爲元組
>>> tuple([2,3,4])
(2, 3, 4)