Python 數據結構

python 內置數據結構python 內置數據結構
數字的處理函數:

round() 五舍六入 ? ? ? 2.5 ?2 ? ? 2.6 ? ?3

floor() 向下取整 ? ? ? 2.5 ?2 ? ? 2.6 ? ?2

ceil() 向上取整 ? ? ? 2.5 ?3 ? ? 2.6 ? ?3

min() 取最小的 ? ? ? 1,2,3 ? ? ?1

max() 取最大的 ? 1,2,3 ? ? ?3

pow(2,3) ? 2的n次方 ? ?2**3 ? = ? 8

type(obj) 返回類型,而不是字符串

list

一個隊列,一個排列整齊的隊伍 列表內的個體稱作元素,由若干元素組成列表 元素可以是任意對象(數字,字符串,對象,列表) 列表內元素有序,可以使用索引 線性的數據結構 使用[]表示 列表是可變的
列表的定義及初始化 list() lis=[1,2] lis=[]
列表索引訪問 list[index]
列表的查詢 index(value,[start,[stop]])
列表元素修改 list[index]=value
列表增加,插入元素

lis.append(object) ?尾部增加

lis.insert(index.object)

在指定索引index處插入元素 + 連接操作,將兩個劫鏢連接起來 * 重復操作,將列表元素重復n次。返回新的列表
列表元素刪除

lis.remove(value) lis.pop() ? 不指定從列表尾部彈出一個元素,指定就從索引處彈出以惡搞元素 lis.clear() 清楚列表所有元素,剩下一個空列表
列表其他操作

lis.reverse() 將列表元素反轉,就地修改

lis.sort(key=None,reverse=False) ? 排序默認不反轉
列表復制 淺copy(只是復制引用而已) 和 深copy
隨機數:為隨機 random 模塊

random.randint(1,10) ?隨機1-10之間的整數

random.choice([1,2,3,4])或者(range(9)) ()括號是非空序列集合,然后隨機挑選一個 random.randrange(1,10,2) 從一到10每次加2隨機

randmon.shuffle(list) 就地打亂列表元

元組

元組是一個有序的元素組成的集合,使用()表示,元組是不可變對象 元組是只讀的,所以增,改,刪方法都沒有

t=() 定義一個空元組

t=(1,) 一個元素元組的定義元組

元素的訪問 支持正負索引

正索引:從左至右,從零開始,為列表中每一個元素編號

負索引:從右至左,從-1開始

t=(9,8,6,5,3,4) t[2]=6 t[-4]=6

元素查詢

t=(9,8,6,5,3,4,3) 根據value查詢 ? ? ? ? ?開始索引 ?到 停止索引

t.index(3) ?t.index(3, ? 1, ? ? ? ?7)

返回列表中匹配value的次數 count(value) t.count(3)

返回元素的個數

len(tuple)

len(t)

命名元組 ? namedtuple? 意思是一個命名的元組,返回一個元組的子類,并定義字段 namedtuple(typename,field_names,verbose=False,rename=False) 類型名稱 ? 字段 詳情名打印 ? ? 允許修改名字

字符串

一個個字符組成的有序的序列,是字符的集合 使用單引號,雙引號,三引號引住的字符序列 字符串是不可變對象

‘dddd’ “sssss” ?”’dasdsadas”’ python3起,字符串就是Unicode類型
字符串的定義 初始化

str1 = ‘wwww.cofk’
字符串元素訪問 — 下標 字符串支持使用索引訪問

sq = “select * from user where name=’tom'” sq[4] = c
字符串join連接

string.join(iterable)

a = ‘asdf’ ‘,’.join(a) ->> ‘a,s,d,f’

字符串 + 連接

a = ‘asdf’ b = ‘fdsa’ a + b –>> ‘asdffdsa’
字符串分割

split(sep=None,maxsplit=1) 從左到右? sep 指定分割字符串,缺省的情況下空白字符串作為分隔符 maxsplit 指定分割的次數,-1 表示遍歷整個字符串

rsplit(sep=None,maxsplit=-1) 從右到左 sep 指定分割字符串,缺省的情況下空白字符串作為分隔符 maxsplit 指定分割的次數,-1 表示遍歷整個字符串

splitlines([keepends])

按照行來切分字符串 keepends 指的是是否 保留行分隔符 行分隔符包括 \n \r\n \r字符串分割* ?? partition(sep) > 返回的是一個元組 從左至右,遇到分隔符就把字符串分割成兩部分,返回頭,分隔符,尾三部分的三元組,如果沒有找到分隔符,就返回2個空元素的三元組 sep 分割字符串 必須指定
rpartition(sep) –>> (head,sep,tail)
字符串大小寫

upper() 全大寫

lower() 全小寫

swapcase() ?交互大小寫
字符串排版

title() 標題的每個單詞都大寫

capitalize 首個字母大寫

center(width[,fillchar])

zfil(width)

ljust(width[,fillchar])

rjust(width[,fillchar])

字符串修改

replace(old,new[,count])

‘www.magedu.com’.

replace(‘w’,’p’) 把所有的W都替換成p

‘www.magedu.com’.replace(‘w’,’p’,2) 把第1個和第2個W換成p

‘www.magedu.com’.replace(‘w’,’p’,3) 把 第1,2,3個W換成p

‘www.magedu.com’.replace(‘ww’,’p’) 把兩個w換成一個p

‘www.magedu.com’.replace(‘www’,’python’,2) 把3個w替換成python
strip([chars]) 從字符串兩端除去指定的字符集chars中的所有字符 如果沒有指定,去除兩端的空白字符 lstrip([chars]) 從左邊開始

rstrip([chars]) 從右邊開始

字符串查找

find(sub[,start[,end]]) 在指定區間[start,end],從左到右,查找子串sub,找到返回索引,沒有找到返回-1
rfind(sub[,start[,end]]) 在指定區間,從右到左查找
str.find(” “,5) 從5開始

str.find(” “,5,11) 從5開始到11結束
str.index(sub[,start[,end]])
count(sub[,start[,end]]) 從左到右,統計子串sub出現的次數 str.count(‘s’) str.count(‘s’,5)
endswith(suffix[,start[,end]]) ?字符串是否以suffix結尾 startwith(prefix[,start[,end]]) 字符串是否以prefix開始
字符串判斷

isanum() 判斷是否是字母和數字組成

isalpha() 判斷是否是字母

isdecimal() 是否只包含十進制數字

isdigit() 是否全部是數字

isidentifier() 是不是字母和下劃線開始

islower() 判斷是否小寫

isupper() 判斷是否大寫

isspace() 是否只包含空白字符

字符串格式化 字符串的格式化是一種拼接字符串輸出樣式的手段,更靈活方便

‘l am %03d’%(20) –>> ‘l am 020’

‘l like %s.’%’Python’
format 函數式字符串語法 — python 鼓勵使用

“{} {}”.format(*args,**kwargs) — str

{} ?花括號表示占位符 位置參宿

“{}:{}”.format(‘192.16.1.1′,8888) 關鍵字或命名參數 “{server} {1}:{0}”.format(8888,’192.168.1.1’,server=”Web Server info:”)

訪問元素

“{0[0]}.{0[1]}”.format((‘magedu’.’com’))
“{0}*{1}={2:<2}”.format(3,2,6) “{0}*{1}={2:02}”.format(3,2,2*3)

bytes、bytearr

bytes和bytearray 是Python3引入兩個新的類型 bytes ? 是不可變字節序列 bytearray ? 字節數組 可變
字符串與bytes

字符串是字符組成的有序序列,字符可以使用編碼來理解 字符串按照不同的字符集編碼encode返回字節序列bytes
字節序列按照不同的字符的字符集解碼decode返回字符串

bytes定義

bytes() ?空bytes

bytes(int) 指定字節的bytes,被0填充

bytes(iterable_of_ints)–>>bytes[0,255]的int組成的可迭代對象

bytes(string,encoding[,errors])–>> bytes 等價于string.encode() bytes(bytes_or_buffer)–>>immutable copy of bytes_or_buffer ?從一個字節序列或者buffer復制一個新的不可變的bytes對象
使用b前綴定義 bytes 操作 和str類型類似,都是不可變類型,所以方法很多一樣,只不過bytes的方法輸入是bytes,輸出是bytes
替換操作:

b”abcda”.replace(b’f’,b’k’)

查找操作:b”adsd”.find(b’b’)
hex() ? 返回16進制表示的字符串

bytearray bytearray() ?空bytearray

bytearray(int) 指定字節的bytearray,被0填充

bytearray(iterable_of_ints)–>>bytearray[0,255]

bytearray(string,encoding[,errors]) bytearray

近似string.encode() 不過返回可變對象 bytearray(bytes_of_buffer) 從一個字節序或buffer復制出一個新的可變的bytearray對象
bytearray ?操作

bytearray(b’abcdef’).replace(b’f’,b’k’)

bytearray(b’abc’).find(b’b’) hex() ? 返回16進制的字符串

bytearray(‘abc’.encode()).hex() 索引

bytearray(b’adfds’)[2] ? 返回該自己對應的數,int類型

append(int) 尾部追加一個元素 inster(index,int) 在指定索引位置插入元素

extend(iterable_of_ints) 將一個可迭代的整數集合追加到當前bytearray
pop(index=-1) 從指定索引上移除元素,默認從尾部移除

remove(value) 找到第一個value移除,找不到拋ValueError 異常

clear() 清空bytearray reverse()

翻轉bytearray,就地修改

線性結構

可迭代 for…in.. len() 可以獲取長度 通過下標就可以訪問

可以切片 列表 元組 字符串 bytes bytearray
切片 通過索引區間訪問線性結構的一段數據 sequence[start:stop] 表示返回[start,stop)區間的子序列 支持負索引 start為0,可以省略 stop為末尾,可以省略 start一定要在stop的左邊 [:] 表示從頭至尾,全部元素被取出,等效于copy()方法
步長切片 [start:stop:setp] step 為步長,可以正,可以負,默認是1 step要和start:stop同向,否則返回空序列

 

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

(0)
5220367552203675
上一篇 2017-09-23
下一篇 2017-09-23

相關推薦

  • rsync+inotify實現數據實時同步備份

    定時備份和實時備份        說到備份,無疑于定時備份和實時同步備份。定時備份可以通過腳本或者Crontab來實現,而實時同步備份可以通過某些接口監控文件的各種變化情況來實現的(比如內核接口inotify);通過對比可以發現對數據信息要求高的環境使用實時同步備份可以更好更有利的保護數據的安全性。 軟件介紹之rsyn…

    Linux干貨 2015-02-28
  • N23-第二周博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理工具:cp,mv,rm    cp命令:cope       源文件:目標文件       單源復制:cp [OPTION]… [-T] SOURCE DEST …

    Linux干貨 2016-12-05
  • 編譯安裝httpd-2.4.9及新特性詳解

    前言 前面我們講解了httpd在CentOS6上(httpd-2.2)的相關功能配置,而CentOS7上采用了httpd-2.4的版本,那么httpd-2.4增加了哪些特性呢?接下來讓我們在CentOS6.6上手動編譯安裝一下httpd-2.4.9,看一下和httpd-2.2有什么不同,順便補充說一下httpd的其它功能。 環境及新特性介紹 環境介紹 系統環…

    Linux干貨 2015-04-15
  • 馬哥教育網絡班21期第10周課程練習

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) POST加電自檢—— 根據bios設定,順序查找引導設備—— 讀取引導設備MBR(共512字節,前446為bootloader,后64表示分區信息,后2表示bootloader有效性),加載bootloader程序—— 以grub為例,grub1.0階段將零磁道一扇區加載到內存,gr…

    Linux干貨 2016-10-24
  • 馬哥教育網絡班21期-第4周課程練習

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。     cp -R /etc/skel /home/tuser1     chmod g-rwx,o-r…

    Linux干貨 2016-08-03

評論列表(1條)

  • manbinn
    manbinn 2017-09-24 10:06

    內容中byte、bytearry標頭漏掉了一個’y’字母,bytes、bytearr

欧美性久久久久