1. 程式人生 > 實用技巧 >python基礎3-序列基礎(str+list+tuple)

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))
h
ello,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,)