python基礎3-序列基礎(str+list+tuple)
補充一個上面部落格忘記補充的基礎概念
後面遇上再逐個解析補充
python3中不可變資料型別:
bool, int, float, complex, str, tuple, frozenset, bytes
可變的資料型別:
list,dict,set,bytearray
序列sequence
何為序列?
在數學上,序列是排成一列的物件;
兩個特性:1.線性排列 每個元素,不是在其他元素之前,就是在其他元素之後
2.序列具備順序性,可通過下標精確訪問
python常見基礎序列有:字串,列表,元組等
字串
一串字元有序排列就是 字串序列
字串的常見序列操作
例如:
>>> info = "hello,world" #索引 #從0開始,從左往右依次+1,-1可直接索引至最後 >>>print(info[0]) "h" #從-1開始,從左往右依次-1 >>>print(info[-2]) "l" #切片 第一個表示起始位置(該位置元素應該被包含) >>>print(info[1:]) "ello,world" # 最後一個結束位置(該位置元素不被包含,不寫預設全部讀取) >>>print(info[1:-1]) "ello,worl"#注意沒有"d" # 步長 預設>>>print(info[1:-1]為1,正數從左往右切,負數從右往左切 >>>print(info[1:-1:2]) "el,ol"
'''
切片需要注意的地方:
1.左含又不含(切換結束位置應被捨棄)
2.亂切不報錯(切片如果錯誤切片,比如info[-1:1:2])切片不會報錯
'''
字串的一些常用函式:
兩加:join、replace
兩索引:find、index
兩個數:len、count
兩大小寫變化:upper、title
兩長度變化:split、center、
字串的查詢
find————字串獨用
info = "hello,world"
print(info.find("e"))
1 #存在返回對應下標,不存在返回-1
index————有序容器都可以用
print(info.index("e"))
1 #存在返回對應下標,不存在就報錯,
謹慎使用,多個返回第一個
後面可以跟兩個引數
字串長度判斷
len————有序容器都可以用
print(len(info)))
11
蒐集出現特定字元次數
count————字串獨有
print(info.count("1"))
0
split() 字串切割
print(info.split(","))
['hello', 'world']#返回值是列表,不會影響原字元竄
upper() 將所有的字元轉換為大寫
print(info.upper())
HELLO,WORLD
title() 首字母轉換為大寫
print(info.title())
Hello,World#會自動識別對應符號
center() 返回一個原字串居中,並以空格填充至長度寬度的新字串
print(info.center(20,"*"))
hello,world*
其字串兩頭被*填充,一共20個字元,不均勻時優先後面,不寫預設空格填充
join() 在字串後面插入一個指定字元,構造一個新的字串
print("".join(info))
hello,worl*d #難得的填充物放在前面的函式
replace
isspace() 檢測字串中是否只包含空格,如果有返回Trun反之返回False,通俗的講就是判斷非空驗證
isalnum() 檢測是否只包含數字或字母。用處:可以用於判斷密碼,一般情況下密碼不能輸入漢字或空格。
isdigit() 檢測字元是否只包含數字, 返回Trun 和 False
isalpha() 檢測字串是否只包含字母
日常字串最常見的還是以下三個操作:
1.序列切片
2.字元切割
3.正則表達
涉及到字串的轉義和r字串,b字串等字串的其他用法等到格式化輸出的時候一起總結
列表
列表是可以儲存任意型別的序列
因為相比於字串和元組,列表是難得的可以修改的序列
所以,這裡以列表為例子,講一下
增刪改查 合併排序
增:
append、insert
>>>list1=[1,2,3]
>>>list1.append(4)
>>>print(list1)
[1,2,3,4]
#尾部開始增加元素
>>>list1=[1,2,3]
>>>list1.insert(0,4)
>>>print(list1)
[4,1,2,3]
#第一個引數為下標序列,後一個引數為填入數值
#第一個引數大於最大序列,預設尾部,不會報錯
刪:
pop,del,clear,remove
list1 = [1,2,3,4,5]
list1.pop(2)
print(list1)
[1,2,4,5]
pop 直接彈出下標2的元素,pop彈出的時候可以看到
如果不註明的話,彈出的預設為最後的元素
list1 = [1,2,3,4,5]
del list1[2]
print(list1)
[1,2,4,5]
按下標直接刪除某個元素
list1 = [1,2,3,4,5]
list1.remove(2)
print(list1)
[1,3,4,5]
按值刪除某個元素
list1 = [1,2,3,4,5]
list1.clear()
print(list1)
[]
清空列表的值
改
list1= [1,2,3]
list1[2] = 4
print(list1)
[1,3,4]
查
1.查詢方法
print(dir(list))
2.查詢列表
index、count ,與上面字串使用方法相同
合併
>>>list1=[1,2,3]
>>>list2=[4,5,6]
>>>list1.extend(list2)
>>>print(list1)
[1,2,3,4,5,6]
排序
列表的排序此處僅做最簡單的sorted介紹,詳情可見後面的筆記
>>> sorted([5, 2, 3, 1, 4])
[1, 2, 3, 4, 5]
#注意也可以使用a.sort(),此時list本身將被修改
列表的拷貝
1.賦值、
1.數字賦值
a=1
b=a
#id(a)和id(b)相同,對映的都是1的指標
a=2
print(b) -------->b=1
#id(b)和id(a)不同,b對映數字常量1的記憶體指標,a對映數字常量2的記憶體指標
賦值的本義就是變數對映常量的指標
2.淺拷貝、深拷貝
>>>import copy
>>>a=[1,2,[3,4]]
>>>b=copy.copy(a)
#此時就是簡單的淺拷貝,外層指標不同(可以檢視id的方法驗證)
#內層指標相同,例如:
>>>a[-1].append(5)
>>>print(a,b)
[1, 2, [3, 4, 5]] [1, 2, [3, 4, 5]]
所以,深拷貝就是完全拷貝內外層指標都不相同
c=copy.deepcopy(a)
元組
元組只能查詢,因為元組是不可更改的
元組建立很簡單,只需要在括號中新增元素,並使用逗號隔開即可
更多介紹在後面提及時再詳談
注意:元組中只包含一個元素時,需要在元素後面新增逗號
tup1 = (50,)