Python入門基礎:從列表說到字串
Python中的基本概念:列表和元組
Python中的資料型別主要分為兩大類:簡單的單一資料型別,比如整型、浮點型和布林型;負責的容器資料型別,也就是包含多資料型別的一個複合資料,諸如列表list、元組tuple、字典dict、集合set、字串str等。
列表
列表是有序集合,沒有固定大小,能夠儲存任意數量任意型別的 Python 物件,語法為 [元素1, 元素2, ..., 元素n] 。
1. 關鍵點是「中括號 []」和「逗號 ,」
2. 中括號 把所有元素綁在一起
3. 逗號 將每個元素一一分開
列表可以用函式或者推導式來建立
x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0] print(x, type(x)) x = [[0 for col in range(3)] for row in range(4)] print(x, type(x))
注意:
由於list的元素可以是任何物件,因此列表中所儲存的是物件的指標。即使儲存一個簡單的[1,2,3] ,也有3個指標和3個整數物件。
x = [a] * 4 操作中,只是建立4個指向list的引用,所以一旦a 改變, x 中4個a 也會隨之改變。
x = [[0] * 3] * 4
print(x, type(x))
x[0][0] = 1
print(x, type(x))
注意:列表不像元組,列表內容可更改 (mutable),因此附加 ( append , extend )、插入 ( insert )、刪除 ( remove , pop ) 這些操作都可用。
list.append(obj) 在列表末尾新增新的物件,只接受一個引數,引數可以是任何資料型別,被追加的元素在 list中保持著原結構型別;
list.extend(seq) 在列表末尾一次性追加另一個序列中的多個值(用新列表擴充套件原來的列表);
list.insert(index, obj) 在編號 index 位置前插入obj;
list.remove(obj) 移除列表中某個值的第一個匹配項;
remove 和 pop 都可以刪除元素,前者是指定具體要刪除的元素,後者是指定一個索引;
del var1[, var2 ……] 刪除單個或多個物件。
如果你要從列表中刪除一個元素,且不再以任何方式使用它,就使用del 語句;如果你要在刪除元素後還能繼續使用它,就使用方法pop() 。
重點學習一下:複製列表中的所有元素(淺拷貝)——:
list1 = [123, 456, 789, 213]
list2 = list1
list3 = list1[:]
print(list2)
print(list3)
list1.sort()
print(list2)
print(list3)
list1 = [[123, 456], [789, 213]]
list2 = list1
list3 = list1[:]
print(list2)
print(list3)
list1[0][0] = 111
print(list2)
print(list3)
元組
「元組」定義語法為: (元素1, 元素2, ..., 元素n)
1. 小括號把所有元素綁在一起
2. 逗號將每個元素一一分開
1. Python 的元組與列表類似,不同之處在於tuple被建立後就不能對其進行修改,類似字串。
2. 元組使用小括號,列表使用方括號。
# 元組和列表類似,元組被建立後不可更改
t1 = (1,10.31,'python')
t2 = 1,103.31,'python'
print(t1,type(t1),' | ',t2,type(t2))
1. 建立元組可以用小括號 (),也可以什麼都不用,為了可讀性,建議還是用 ()。
2. 元組中只包含一個元素時,需要在元素後面新增逗號,否則括號會被當作運算子使用:
# 元組中只包含一個元素時,元素後要新增逗號,不然誤以為小括號也是元組元素
t00 = 1,
print(t00,type(t00))
元組相關的操作符
比較操作符、邏輯操作符、連線操作符 +、重複操作符 *、成員關係操作符 in 、not in
'''
索引,獲取元組的單個元素
切片,獲取一組元素
'''
week = ('Monday','Tuesday','Thursday','Friday')
print(week[0][0],week[0][1])
week = week[:2]+('Wednesday',)+week[2:]
print(week)
# 元組的重複操作符
t12 = (2,3,4,5)
t23 = t12*2
print(t23)
元組大小和內容都不可更改,因此只有 count 和 index 兩種方法。
'''
元組的大小不可更改
count:記錄某個元素在該元組中出現的次數
index:元素在元組中出現的索引
'''
print(t23.count(3))
print(t23.index(4))
如果你只想要元組其中幾個元素,用萬用字元「*」,英文叫 wildcard,在計算機語言中代表一個或多個元素。
# 解壓元組,萬用字元[*]表示一個或者多個元組中的元素
a,b,*rt,d = t23
print(a,' * ',b,' * ',*rt,' * ',d)
print((1,2)*2,type((1,2)*2))
print((1,)*2,type((1,)*2))
print((1)*2,type((1)*2))
字串
1. Python 中字串被定義為引號之間的字元集合。
2. Python 支援使用成對的 單引號 或 雙引號。
如果字串中需要出現單引號或雙引號,可以使用轉義符號\ 對字串中的符號進行轉義。
print(type('5'+'8'))
# str中的轉義字元位 \,可以對特殊字元進行轉義
print('let\'s go')
print("let's go")
python三引號允許一個字串跨多行,字串中可以包含換行符、製表符以及其他特殊字元。
# 三引號允許一個字串跨多行,字串中可以包含換行符、製表符以及其他特殊字元
para_str = """這是一個多行字串的例項
多行字串可以使用製表符TAB ( \t )。
也可以使用換行符 [ \n ]。
"""
print (para_str)
字符串的切片與拼接
1. 類似於元組具有不可修改性
2. 從 0 開始 (和 C 一樣)
3. 切片通常寫成 start:end 這種形式,包括「start 索引」對應的元素,不包括「end 索引」對應的元素。
4. 索引值可正可負,正索引從 0 開始,從左往右;負索引從 -1 開始,從右往左。使用負數索引時,會從最後一個元素開始計數。最後一個元素的位置編號是 -1。
字串的常用內建方法有很多,比如capitalize()、lower()、upper()、swapcase()等等,這裡取幾個不常見的看一下。
1. ljust(width[, fillchar]) 返回一個原字串左對齊,並使用fillchar (預設空格)填充至長度width 的新字串。
2. rjust(width[, fillchar]) 返回一個原字串右對齊,並使用fillchar (預設空格)填充至長度width 的新字串。
'''
ljust(width[,fillchar])
rjust(width,[,fillchar])
返回一個原字串左/右對齊,用fillchar填充
'''
str4 = '1101'
print(str4.ljust(8,'0'))
print(str4.rjust(8,'0'))
1. lstrip([chars]) 截掉字串左邊的空格或指定字元。
2. rstrip([chars]) 刪除字串末尾的空格或指定字元。
3. strip([chars]) 在字串上執行lstrip() 和rstrip() 。
'''
lstrip([char])、rstrip([char])、strip([char])
刪除字串前後的空格或者指定字元
'''
str5 = ' I love Lsgroup '
print(str5.lstrip())
print(str5.rstrip())
print(str5.strip())
split(str="", num) 不帶引數預設是以空格為分隔符切片字串,如果num 引數有設定,則僅分隔num 個子字串,返回切片後的子字串拼接的列表。
# split分割儲存
u = 'www.baidu.com.cn'
u1,u2,u3 = u.split('.',2)
print(u1,'\n',u2,'\n',u3)