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
下一篇 2018-03-31

相關推薦

  • 文件IO常用操作

    io模塊 StringIO BytesIO 類
    pathlib模塊 路徑操作 3.4版本開始
    os模塊 更改權限、顯示信息 3.4版本之前路徑操作
    shuril 模塊(高級文件操作
    csv 文件
    configparser模塊 ini文件處理

    2018-05-02
  • Python高階函數及裝飾器

    First Class Object 函數在Python中是一等公民 函數也是對象,可調用的對象 函數可作為普通變量、參數、返回值等 高階函數 數學定義:y=g(f(x)) 高階函數需滿足的條件,至少其一 接受一個或多個函數作為參數 輸出一個函數 內建函數的高階函數 排序:sorted(iterable[,key][,reverse]) 返回一個新列表,對一…

    2018-04-22
  • 函數與生成器

    函數 由若干語句組成的語句塊,函數名,參數列表構成,是組織代碼的最小單元,完成一定的功能,結構化編程對代碼的最基本的封裝,封裝的目的是為了復用 函數中沒有return,隱式會返回一個none值 定義中的參數列表成為形式參數,只是一種形式表達,簡稱形參 調用時寫的參數是實際參數,是實實在在傳入的值,簡稱實參 函數的定義,只是聲明了參數,不會執行,可以進行調用,…

    2018-04-16
  • Python內置數據結構——字符串

    知識結構圖 學習筆記 字符串 字符組成的有序序列,字符的集合 使用單引號、雙引號、三引號引起來的字符序列 不可變對象 Unicode類型 定義 單引號、雙引號、三引號 r、R:引號內的字符原樣輸出 元素訪問 索引訪問 可迭代 join連接 “string“.join(iteratable) 使用string作為分隔符將可迭代對象連接起…

    2018-03-31
  • Python文件操作

    計算機體系架構 運算器:完成各種算術運算、邏輯運算、出具傳輸等數據加工處理 控制器:控制程序的執行 CPU = 運算器 + 控制器 存儲器:用于記憶程序的數據,內存 輸入設備:將數據或程序輸入到計算機中 輸出設備:將數據或程序的處理結果展示給用戶 文件IO常用操作 open 打開 read 讀取 write 寫入 close 關閉 readline 行讀取 …

    Python筆記 2018-05-02
  • Python內建函數

    內建函數 標識id() 返回對象的唯一標識,CPython返回內存地址 哈希hash() 返回一個對象的hash值 類型type() 返回對象的類型 類型轉換 int()、float()、bin()、hex()、oct()、bool()、list()、tuple()、dict()、set()、complex()、bytes()、bytearray() 輸入i…

    2018-04-08
欧美性久久久久