Python:list列表
阿新 • • 發佈:2018-11-06
列表 list
列表 list 列表是一種容器 列表是可以被改變的序列容器 建立空列表的字面值 L = [] # L 繫結一個新建立的空列表 建立非空列表的字面值: L = [1, 2, 3, 4] L = ["北京", "上海", "深圳"] L = [1, "二", 3.14, "Four"] L = [1, 2, [3.1, 3.2, 3.3], 4] 列表的構造(建立)函式 list list() 建立一個空的列表,等同於[] list(iterable) 用可迭代物件建立一個列表 示例: L = list() # L繫結空列表 L = list("hello") #L繫結['h','e','l','l','o'] L = list(range(10)) # L繫結[0,1,2,3...9] **列表的運算:** 算術運算子 + += * *= 示例: + 加號用於拼接列表 x = [1, 2, 3] y = [4, 5, 6] z = x + y # z = [1, 2, 3, 4, 5, 6] += 用於原列表與右側可迭代物件進行拼接,用變數繫結列表 語法: x += 可迭代物件 如: x = [1, 2, 3] y = [4, 5, 6] x += y # x繫結[1, 2, 3, 4, 5, 6] x = * 生成重複的列表 *= 讓原列表重複n次再用原變數繫結 x = [1, 2] * 3 # x =[1, 2, 1, 2, 1, 2] x = [1, 2] x *= 2 # x = [1, 2, 1, 2] 列表的比較運算: 運算子: < <= > >= == != 說明: 列表的比較規則與字串的比較規則相同 列表要求每兩個元素能依次進行比較,否則會出現型別錯誤 示例: [1, 2, 3] < [1, 2, 4] # True [1, 2, 3] != [1, 2, 4] # True ["One", "Two"] < ["1", "2"] # False [1, 'Two'] > ['Two', 1] # TypeError [1, "二", 3.14] < [2, "2", 1] # True
列表的in / not in 運算子
判斷一個值是否存在於列表中,如果存在則返回True,
否則返回False
同字串的 in 運算子類似
示例:
x = [1, 'Two', 3, "四"]
3 in x # True
"3" in x # False
10 not in x # True
列表的索引操作:
索引取值 語法: x = 列表[整數表示式] 用法: 等同於字串的索引(同樣分為正向索引和反向索引) 索引賦值 列表是可變的序列,可以通過索引賦值改變列表中的元素 語法: 列表[整數表示式] = 表示式 示例: x = [1, 2, 3, 4] x[2] = 1 + 2.14 # 改變了第三個元素的值 print(x)
列表的切片操作
切片取值 列表[起始索引:終止索引:步長] 列表的切片取值是從原列表中取出想要的元素再次組成一個 新的列表 示例: L = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] y = L[1:10:2] # y = [1, 3, 5, 7, 9] **切片的賦值操作** 作用: 可以改變原列表的排列,可以插入,和修改資料 語法: 列表[切片] = 可迭代物件 說明: 切片賦值的賦值運算子(=)的右側必須是一個可迭代物件 示例: L = [2, 3, 4] L[0:1] = [1.1, 2.2] # L=[1.1, 2.2, 3, 4] L[0:2] = [2] # L = [2, 3, 4] L[1:2] = [3.1, 3.2] # L = [2, 3.1, 3.2, 4] L = [2, 3, 4] L[1:1] = [2.1, 2.2] # L = [2, 2.1, 2.2, 3, 4] L[0:0] = [0, 1] # L = [0, 1, 2, 2.1 ....] L = [2, 3, 4] L[3:3] = [5, 6] # L = [2, 3, 4, 5, 6] L = [2, 3, 4] L[1:2] = "AB" # L = [2, 'A', 'B', 4] L[1:3] = range(7, 10) # L = [2, 7, 8, 9, 4] **切片的注意事項:** 對於步長不等於1的切片賦值,賦值運算子的右側的可迭代物件 提供的元素的個數,一定要等於切片切出的段數 L = [1, 2, 3, 4, 5, 6] L[::2] = "ABC" # 對的 L[::2] = "abcd" # 錯的
del 語句
可以用於刪除列表的元素
語法:
del 列表[整數表示式]
del 列表[切片]
示例:
L = [1, 2, 3, 4, 5, 6, 7, 8]
del L[-1] # L = [1, 2, 3, 4, 5, 6, 7]
del L[1::2] # L = [1, 3, 5, 7]
python中常用於的序列的函式
len(x) 返回序列的長度
max(x) 返回序列的最大值元素
min(x) 返回序列中最小值元素
sum(x) 返回序列中所有元素的和(元素必須是數字型別)
any(x) 真值測試.如果列表中的一個值為真值則返回True
all(x) 真值測試.如果列表中所有的值為真值則返回True
示例:
L = ["Beijing", 1, 123]
print(len(L)) # 3
L = [8, 3, 6, 2]
print(max(L)) # 8
print(min(L)) # 2
print(sum(L)) # 19
列表常用的方法:
L.append(x) 追加
L.insert(索引, 資料物件)
L.extend(可迭代物件)
L.remove(資料物件)
L.pop([整數索引])
L.clear()
L.count(資料物件)
L.index(資料物件) 返回第一次出現的位置
L.sort(reverse=False) 排序
L.reverse() 反轉
列表與字串比較:
1. 列表和字串都是序列,元素之間有先後順序關係
2. 列表和字串有相同的操作: + += * *= < > in ...
3. 字串是不可變化的序列,列表是可變的序列
4. 字串的每個元素只能儲存字元,而列表可以儲存任意型別
的元素
5. 列表和字串都是可迭代物件
字串的文字解析方法 split 和join
S.split(sep=None) 將字串使用sep作為分隔符分割s
字串,返回分割後的字串列表;當不給定參
數時,用空白字元作為分隔符
S.join(iterable) 用可迭代物件中的字串生成一箇中
間用S進行分隔的字串
示例:
s = 'Beijing is Capital'
L = s.split(' ') # L = ['Beijing', 'is', 'Capital']
s2 = "##".join(L) # s2 = "Beijing##is##Capital"
列表推導式 list comprehesion
列表推導式是用可迭代物件建立列表的表示式
作用:
建立列表
語法:
[ 表示式 for 變數 in 可迭代物件]
或
[ 表示式 for 變數 in 可迭代物件 if 真值表達式]
示例:
生成一個數值為1~9的平方的列表
L = [x**2 for x in range(1, 10)]
# L = [1, 4, 9, 16 .... 64, 81]
# 生成一個數值1~9的平方的列表(只要其中奇數的平方)
L = [x**2 for x in range(1, 10) if x % 2 = = 1]
# L = [1, 9, 25, 49, 81]
以上列表推導式可以改寫為:
L = []
for x in range(1, 10):
if x % 2 == 1:
L.append(x**2)
列表推導式的巢狀語法:
[ 表示式
for 變數1 in 可迭代物件1 if 真值表達式1
for 變數2 in 可迭代物件2 if 真值表達式2
.....]
如:
L = [x + y for x in "ABC" for y in "123"]
# L = ['A1', 'A2', 'A3', 'B1', 'B2', 'B3',
'C1', 'C2', 'C3']