Python的內置數據結構

字符串、列表、元組

字符串
是一個個字符組成的有序序列,是字符的集合
使用單引號、雙引號、三引號引住的字符序列
字符串是不可變對象
Python3,字符串都是Unicode類型
字符串元素訪問,使用下標
字符串支持使用索引訪問
sql=’select *from user where name=tom’
sql[4]
有序的字符集合,字符序列
可以迭代
lst = list(sql)
字符串join連接 *
“string”.join(iterable)?
使用string來對iterable這個可迭代對象里面的元素進行連接
? ? 將可迭代對象連接起來,使用string作為分隔符
? ? 可迭代對象本身都是字符串
? ? 返回一個新的字符串
字符串+連接
使用+連接字符串,返回一個新的字符串
字符串分割
字符串分割分為兩類
1、split
將字符串按照指定分割符,分割成若干字符串,并返回列表
2、partition
將字符串按照指定字符分割2段,分割成首部、分隔符、尾部三個部分,返回的是元組
split分割
split(sep=None,maxsplit=-1)
從左至右進行分割
sep 指定分割的字符串,缺省情況下是空白字符作為分隔符
maxsplit:指定分割的次數,-1表示遍歷整個字符串
?
rsplit(sep=None,maxsplit=-1)
從右至左進行分割
sep:指定分割的字符串,缺省情況下是以空白字符作為分割符、
maxsplit:指定分割的最大次數
?
splitlines(keepends)
按照行來進行分割
keepends指的是是否保留行分隔符
行分隔符包括\n,\r,\r\n等
keepends為空時,不保留
keepends是Ture時,保留行分隔符
?
字符串分割:
partition(sep)
從左至右,遇到分隔符就把字符串分割成兩個部分,返回頭部、分隔符、尾部組成的元組,如果沒有分隔符,就返回頭部、兩個空元素組成的三元組
sep:分割字符串,必須指定
rpartiton(sep)
從右至左
?
字符串的大小寫:
upper()
lower()
swapcase():交互大小寫
?
字符串排版
title():標題每個單詞都大寫
capitalize():首個單詞大寫
center(width,[fillchar]):width 打印寬度 fillchar 填充的字符
zfill(width)width:打印寬度,居右,左邊用0 進行填充
ljust:左對齊
rjust:右對齊
字符串修改
replace(old,new[count])
字符串中找到匹配的字符串,替換成新的字符,返回一個新的字符串
count:表示替換幾次,不指定就是全部替換
字符串修改
strip([chars])
從字符串兩端,去除指定的字符集chars中的所有字符
為空,默認去除兩邊的空白字符
lstrip([chars])
從左至右
rstrip([chars])
從右至左
字符串的查找
find(sub[,start[,end]]) – int
在指定區間內從左至右查找字串sub,并返回索引,如果沒有找到返回-1
rfind:從右至左進行查找
index(sub,start[,end])-int
在指定區間內從左至右進行查找,如果找到返回索引值,如果沒有找到,拋出異常
rindex:從右至左進行查找
時間復雜度:
index和count方法都是O(n)
隨著數據量的增大,效率下降
len()
返回字符串的長度,即字符的個數
字符串的判斷
endswith(suffix,[,start[,end]])
在指定的區間內,查看是否已suffix結尾
startswith(prefix,[,start,[end]])
在指定區間內,查看是否已prefix開頭
字符串判斷is系列,返回的是bool型
isalnum()是否由字母和數字組成
isalpha()是否由字母組成
isdigit()是否全部是數字
islower()是否都是小寫
isupper()是否全部是大寫
isspace()是否只包含空白字符
字符串格式化
format函數格式化字符串
“{}{xxx}”.format(*args,**kwargs) ->str
args是位置參數,是一個元組
花括號表示占位符
{}表示按照順序匹配的位置參數,{n}表示位置參數索引為n的值
{{}}表示花括號
元組tuple
一個有序的元素的集合
使用小括號進行表示
元組是不可變對象
元組的定義 初始化
定義
? ? tuple()-空的元組
? ? tuple(iterable)括號里面可以是可迭代對象
元組元素的訪問
支持正負索引,正索引從0開始,負索引從-1開始
正負索引不可以越界
元組查詢
index(value,[start,[stop]])
查詢某個值得索引,匹配到第一個元素立即返回
count(value)
查詢value值在元組的個數
以上由于數據量的增大,效率會變得很慢,所以時間復雜度是O(n)
len(tuple)
元組的長度
元組是只讀的,不可以進行修改
命名元組namedtuple
namedtuple(typename,field_names)
命名元組,返回一個元組的子類,并定義字段
from collections import namedtuple
student = namedtuple(‘student’,’name,age’)
tom=student(‘tom’,20)
tom.age
20
類型轉換
int(x):返回一個整數
float(x):返回一個浮點數
complex(x):返回一個復數
bool(x):返回布爾值
數字處理函數
round():四舍六入,5湊偶,意思:小數點后面小于4的值舍掉,大于6的向前進一位,如果小數點后面是5,后面有有效數字,向前進一,如果沒有有效數字,離他最近最近的那個數如果是偶數,舍掉,如果是奇數向前進一位
math模塊、floor()、ceil()? ???? ??? ?? ? floor():向下取整,ceil():向上取整
//:整除,向下取整
min():取最小值
max():取最大值
pow(x,y)? x**y
math.sqrt():平方根
進制函數,返回值是字符串
bin()
oct()
hex()
類型判斷
type():返回的是類型,而不是字符串,包含隱式轉換
isinstance(obj.class_or_tuple):返回布爾型,判斷obj是不是屬于class或者tuple
列表
列表內的元素有順序,可以使用索引
是線性的數據結構
使用[]表示
列表可以在任何位置進行數據的提取
列表是可變類型的
queue:隊列
隊列是線性的數據結構,但是它只能在首部和尾部進行拿取數取數據,可以是先進先出,也可以是后進先出
鏈表
類似手拉手的類型,它的元素在內存中是隨機排列的,一個元素可以知道下一個元素的地址
stack:
類似疊盤子的模型,它是后進先出
列表的定義以及初始化
list():定義一個空的列表
list():括號里面可一個是一個可迭代對象
列表不用定義大小
lst=list():定義一個空的列表
lst=[]
lst=list(range(5))
?
列表的索引訪問
正索引:從左至右,索引從0開始
負索引:從右至左,索引從-1開始
正負索引都不可以越界,負責會引起indexErrors
列表通過索引進行訪問
list[index]
列表的查詢
index(value,[start,stop]):
通過列表內的元素值value來進行查找索引值,其時間復雜度為O(n),
count(value)
返回列表中匹配value的次數,時間復雜度是O(n)
隨著列表的數據量變大,而效率下降
len():可以返回列表元素的個數
列表元素的修改:
通過索引進行修改,list[index]=value
索引不要越界
列表元素的增加,插入元素
append(object),時間復雜度是O(1)
insert(index,object):在指定索引index插入元素object,時間復雜度是O(n),如果索引超過上界,在尾部追加,超過下屆,在首部追加
extend(iteratable):將可迭代的元素追加至列表中,就地修改
+ :實現列表的鏈接操作,產生新的列表,原來的列表保持不變
*:實現列表的重復操作,將本列表元素重復n次,返回一個新的列表
列表*重復的坑:類似這樣的雙分支結構要注意
x=[[1,2,3]]*3
是將列表里面的引用計數重復了3次,實際上都指向同一個
x=[0][1]=200將列表所有元素都修改
[[1, 2, 3], [1, 2, 3], [1, 2, 3]]
x[0][1]=20
x
[[1, 20, 3], [1, 20, 3], [1, 20, 3]]
列表的刪除元素
remove(value) :從左至右查找到第一個匹配的value,移除該元素,時間復雜度是O(n),
pop([index]):不指定index會從尾部進行彈出元素,指定索引,就會在指定的索引出彈出一個元素,彈出的value可以付給一個變量
pop不加index是的時間復雜度是O(1),加index時間復雜度是O(n)
clear():清楚列表所有元素,剩下一個空列表,在清除的時候要考慮gc的影響
?
列表的其他操作:
reverse():
將列表的元素進行翻轉
sort(key=None,reverse=False):對列表的元素進行排序,默認是升序,reverse=True時升序,reverse=False是降序
其中key是一個函數,指定key如何進行排序
in:成員列表
for i in [list]
列表賦值
當將一個列表賦值給另一個列表,賦值的是引用地址,當一個列表發生修改時,另一個列表也會發生修改,類似兩個地址指向同一個對象
copy() ->list
?shadow copy返回一個新的列表
?是淺拷貝,遇到引用類型,只是復制了一個引用
列表的雙分支結構,復制的是一個引用
深拷貝:重新定義個引用地址和對象,與原來的沒有關系,修改其中一個并不會影響另一個
? ? copy提供了deepcopy
? ? import copy
? ? copy.deepcopy()
隨機數
random模塊
randint(a,b)返回[a,b]之間的整數
choice(seq)從非空序列隨機挑選一個元素
randrange([start,]stop[,step])從制定范圍,按照基數遞增的集合獲取一個隨機數
random.shuffle(list)->就地打亂列表元素
sample(population,k)從樣本空間中隨機選取k個元素,作為一個新的列表
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?

?
?
?
?

本文來自投稿,不代表Linux運維部落立場,如若轉載,請注明出處:http://www.www58058.com/93913

(0)
SignalSignal
上一篇 2018-03-31 13:27
下一篇 2018-03-31 14:28

相關推薦

欧美性久久久久