1. 程式人生 > 實用技巧 >【字串-列表-元組相關函式和方法】

【字串-列表-元組相關函式和方法】

列表相關操作

(1)列表的拼接   (同元組)
(2)列表的重複   (同元組)
(3)列表的切片   (同元組)
語法 => 列表[::]  完整格式:[開始索引:結束索引:間隔值]
	(1)[開始索引:]  從開始索引擷取到列表的最後
	(2)[:結束索引]  從開頭擷取到結束索引之前(結束索引-1)
	(3)[開始索引:結束索引]  從開始索引擷取到結束索引之前(結束索引-1)
	(4)[開始索引:結束索引:間隔值]  從開始索引擷取到結束索引之前按照指定的間隔擷取列表元素值
	(5)[:]或[::]  擷取所有列表
(4)列表的獲取   (同元組)
(5)列表的修改   ( 可切片 )
(6)列表的刪除   ( 可切片 )

列表的相關函式

append()

功能:向列表的末尾新增新的元素
格式:列表.append(值)
返回值:None
注意:新新增的值在列表的末尾,該函式直接操作原有列表

insert()

功能:在指定索引之前插入元素
格式:列表.insert(索引,值)
返回值:None
注意:直接改變原有列表

extend()

功能:迭代追加所有元素
格式:列表.extend(可迭代性資料)
返回值:None
注意:直接改變原有列表

pop()

功能:通過指定索引刪除元素,若沒有索引移除最後那個
格式:列表.pop(索引)
返回值:刪除的元素
(注意:沒有指定索引,預設移除最後一個元素 )

remove()

功能:通過給予的值來刪除,如果多個相同元素,預設刪除第一個
格式:列表.remove(值)
返回值:無
(注意:如果有索引的情況推薦使用pop,效率高於remove)

clear()

功能:清空列表
格式:列表.clear()
返回值:空列表

index()

功能:獲取某個值在列表中的索引
格式:列表.index(值[,start][,end]) # []  表達引數可選項 
返回值:找到返回索引  (找不到報錯)

count()

功能:計算某個元素出現的次數
格式:列表.count(值)
返回值:次數

sort()

功能:列表排序(預設小到大排序)
格式:列表.sort(reverse=False)                        
返回值:None
注意:直接更改原列表

reverse()

功能:列表反轉操作
格式:列表.reverse()
返回值:None
注意:直接更改原列表

深拷貝淺拷貝

#copy模組中有 淺拷貝 和 深拷貝 兩種方法
(1)淺拷貝:  淺拷貝只拷貝外層列表  內層列表跟隨原列表進行改變
	# 淺拷貝copy.copy(listvar) 或者 listvar.copy()
(2)深拷貝:  拷貝整個列表  內外列表都不跟隨原列表進行改變
	# 深拷貝copy.deepcopy(listvar)
注意:copy模組的copy方法 和 python內建的函式copy一樣 都是淺拷貝

元組相關操作和方法

元組的相關操作除了不能修改和刪除其中的元素之外 , 剩下操作都和列表相同.
元組裡面能用的方法只有 index 和 count 

#列表的相關操作同(字串,元組)
# 列表的拼接+,列表的重複*,列表的切片[:::][開始索引:結束索引:間隔值],列表的獲取,刪除,修改
lst1=["a","b","c"]
lst2=["d","e","f"]
print(lst1+lst2)#['a', 'b', 'c', 'd', 'e', 'f']

lst1=["abc","def"]
print(lst1*3)#['abc', 'def', 'abc', 'def', 'abc', 'def']
"""
語法 => 列表[::] 完整格式:[開始索引:結束索引:間隔值]
(1)[開始索引:] 從開始索引擷取到列表的最後
(2)[:結束索引] 從開頭擷取到結束索引之前(結束索引-1)
(3)[開始索引:結束索引] 從開始索引擷取到結束索引之前(結束索引-1)
(4)[開始索引:結束索引:間隔值] 從開始索引擷取到結束索引之前按照指定的間隔擷取列表元素值
(5)[:]或[::] 擷取所有列表
"""
lst=["張","王","(1,2,3)","馬","李",{"name":"小馬"}]
res=lst[:]
print(res)#['張', '王', '(1,2,3)', '馬', '李', {'name': '小馬'}]
res=lst[:2]
print(res)#['張', '王']
res=lst[1:4:2]
print(res)
res=lst[-1:-6:-2]
print(res)#[{'name': '小馬'}, '馬', '王']
res=lst[::-1]
print(res)#[{'name': '小馬'}, '李', '馬', '(1,2,3)', '王', '張']

#format格式化字串(1順序傳參,2,索引傳參,3,關鍵字傳參,4,容器型別(列表,元組,字典傳參))
str="{}年真的是特別{}的一年"
res=str.format(2020,"糟心")
print(res)#2020年真的是特別糟心的一年
str="特別{1}的一年{0}年真的是"
res=str.format(2020,"糟心")
print(res)#特別糟心的一年2020年真的是
str='2010年{who}向{who1}借了{money}塊錢,一直沒換'
res=str.format(who='什麼龍',who1="小馬",money=300)
print(res)#2010年什麼龍向小馬借了300塊錢,一直沒換
#容器型別傳參
str='2010年{0[1]}向{1[0]}借了{2[0]}塊錢,一直沒換'
res=str.format(["什麼龍","什麼偉"],("小馬","兔子"),("500",))
print(res)#2010年什麼偉向小馬借了500塊錢,一直沒換
#方法二
str='2010年{name[1]}向{username[0]}借了{money[0]}塊錢,一直沒換'
res=str.format(name=["什麼龍","什麼偉"],username=("小馬","兔子"),money=("500",))
print(res)
# 方法三 (字典 在format當中,不要加上引號)
strvar = "{woman[sm]}向{man[0]}拋了一個眉眼,鼻血直冒三萬多尺,噴血而亡."
res = strvar.format( woman = {"cr":"陳芮","sm":"劉思敏"} , man = ("黃俊","朱佳怡"))
print(res)

###format的填充符號的使用(^,>,<):(原字串居中,原字串居右,原字串居左)({who:!<10})
strvar="{who:*^10}在北京的書生公司上班,職位為{company:&<10},幹了{many:?>9}年了,準備養老了"

res=strvar.format(who="小亮",company="測試工程師",many="13")
print(res)#****小亮****在北京的書生公司上班,職位為測試工程師&&&&&,幹了???????13年了,準備養老了
###進位制轉換等特殊符號的使用(:d,:s,:f :,)
strvar="{:s}看上了一輛SUV,打算買{:<5d}臺,需要{:.2f}萬元,銀行卡里還剩下{:,}元"
res=strvar.format("欣欣",10,9.9,1000000)
print(res)

#字串相關函式
# capitalize,title,upper,lower,swapcase,len,count,find,index,starswith,endswith,is 為系列函式
strvar="what is you Name"
res=strvar.capitalize()
res1=strvar.title()
res2=strvar.upper()
res3=strvar.swapcase()
res4=len(strvar)
#統計某個字串中某個元素的數量
res5=strvar.count("a")
print(res,res1,res2,res3,res4)
print(res5)
#find查詢某個字串第一次出現的索引位置find(字元,start,end)
#index 和find功能相同,找不到直接報錯
strvar="my dad is 66 years old,but,my dad looks very young"
res=strvar.find("my",2,20)
print(res)
#startswith endswith判斷是否以某個字元或者字串為開頭或則結尾,返回TrueorFasle,endswith(字元,start,with)
strvar="my dad is 66 years old,but,my dad looks very young"
res=strvar.startswith("my")
print(res)
#is系列函式,isdecimal是否是純數字
strvar="Today Is Moday"
res=strvar.isupper()
print(res)
strvar="today is monday"
res=strvar.islower()
print(res)
strvar="1122222"
res=strvar.isdecimal()
print(res)
####split,join ,strip,replace
#split#按某字元將字串分割成列表,(預設字元時空格)
strvar="今^&天心情很不爽,被商家欺騙了"
strvar1="11111"
res=strvar.split("&")
print(res)#['今^', '天心情很不爽,被商家欺騙了']
strvar="你 今 天太棒 了"
#可以選擇分割幾次,從左向右
res=strvar.split(" ",2)
print(res)#['你', '今', '天太棒 了']
#join按照某個字元將列表拼接成字串(容器型別都可以)
lst1=["每天都要好心情"]
lst2=["你說對嗎","老鐵"]
print("****".join(lst2))#你說對嗎****老鐵
##center填充字串,原字串居中(預設填充空格),strip預設去掉首尾兩邊的空格,replace預設把字元
# 串中的舊字元換成新字元
v1="很愛很愛你"
res=v1.center(20)
print(res)
#replace("舊的","新的")
strvar = "a b c"
res = strvar.replace(" ","")
print(res)