【Python】python序列類型


Python中,序列類型包括字符串(普通字符串和unicode字符串)、列表元組,所謂序列,即成員有序排列,並且可以通過下邊偏移量訪問到它的一個或者幾個成員。假設序列有n個元素,訪問單個元素時,下標從0開始,到n-1結束,如果是逆序訪問,下標從-1開始,到-n結束,切片操作支持多個元素的訪問。

 

序列類型支持如下操作符——

in/not in:成員關系操作符,返回True或False。

obj [not] in sequence:判斷obj元素是否(不)屬於sequence序列。

+:連接操作符,但是這個操作不是最快或者說最有效的,對字符串來說,這個操作不如把所有的字符串放到一個列表或可迭代對象中,然后調用一個join方法把所有的內容連接在一起以節約內存,類似地,對列表來說,用列表類型的extend()方法把兩個或者多個列表對象合並。

sequence1 + sequence2:連接兩個同類型序列。

*:重復操作符

sequence * copies_int:sequence序列重復copies_int次。

[][:][::]:切片操作符

sequence[index]:訪問單個元素。

sequence[starting_index:ending_index]:訪問始末下標間的元素,支持None作為索引值,等同於不指定這個索引值。

sequence[starting_index:ending_index:step]:訪問始末下標間的元素,指定元素間的步長,支持None作為索引值,等同於不指定這個索引值。

 

序列類型可用如下內建函數——

list(iter):把可迭代對象轉換為列表。

str(obj):把obj對象轉換為字符串,即用字符串來表示這個對象。

tuple(iter):把一個可迭代對象轉換為一個元組。

unicode(obj):把對象轉換成Unicode字符串。

basestring():抽象工廠函數,其作用僅僅是為str和unicode函數提供父類,所以不能被實例化,也不能被調用。

enumerate(iter):接受一個可迭代對象作為參數,返回一個enumerate對象,該對象生成由iter每個元素的index值和item值組成的元組。

len(seq):返回seq的長度。

max(iter,key=None)max(arg0,arg1...,key=None):返回iter或(arg0,arg1...)的最大值,如果指定了key,這個key必須是一個可以傳給sort()方法的,用於比較的回調函數。

min(iter,key=None)min(arg0,arg1...,key=None):返回iter或(arg0,arg1...)的最小值,如果指定了key,這個key必須是一個可以傳給sort()方法的,用於比較的回調函數。

reversed(seq):接受一個序列作為參數,返回一個以逆序訪問的迭代器。

sorted(iter,cmp=None,key=None,reverse=False):接受一個可迭代對象作為參數,返回一個有序的列表,可選參數cmp、key和reverse和list.sort()內建函數含義一樣。

sum(seq,init=0):返回seq和可選參數init的總和,其效果等同於reduce(operator.add,seq,init)

zip([it0,it1...]):返回一個列表,其第一個元素是it0、it1...這些元素的第一個元素組成的一個元組,其它元素依次類推。

 

python字符串——

字符串類型是python里面最常見的類型,是不可變類型,支持單引號、雙引號、三引號,三引號是一對連續的單引號或者雙引號,允許一個字符串跨多行。

字符串連接:前面提到的+操作符可用於字符串連接,還可以直接把幾個字符串連在一起寫,另外調用join()方法也可以連接字符串。

只適用於字符串連接的操作符:前面提到了一些序列類型共用的操作符,除此之外,字符串還有只屬於自己的操作符,包括格式控制操作符%、字符串模板string.Template、原始字符串操作符r/R、Unicode字符串操作符u/U,unicode支持函數

__unicode__()。

 

格式化字符串支持如下符號

%c:轉換成字符

%r:優先用repr()函數進行字符串轉換

%s:優先用str()函數進行字符串轉換

%d、%i:轉換成有符號十進制數

%u:轉換成無符號十進制數

%o:轉換成無符號八進制數

%x、%X:轉換成無符號十六進制數

%e、%E:轉換成科學計數法

%f、%F:轉換成浮點數

%g、%G:浮點數的科學計數法

%%:輸出%

*:定義寬度或者小數點精度

-:用做左對齊

+:在正數前面顯示加號

空格:在正數前面顯示空格

#:在八進制數前面顯示0,在十六進制前面顯示0x或者0X

0:顯示的數字前面填充0而不是默認的空格

m.n:m是顯示的最小寬度,n是小數點后的位數

(var):映射變量(字典參數),如'%(a)s %(b)s' % {'a': 'hello', 'b': 'python'}

字符串內建函數包括:capitalize、center、count、decode、encode、endswith、expandtabs、find、index、isalnum、isalpha、indecimal、isdigit、islower、isnumeric、isspace、istitle、isupper、join、ljust、lower、lstrip、pattition、repalce、rfind、rindex、rjust、rpartion、rstrip、split、splitlines、starswith、strip、swapcase、title、translate、upper、zfill等。

 

下面列舉一些與字符串類型有關的模塊。

string:字符串操作相關函數和工具,比如Template類。出於性能考慮,盡量使用格式化字符串,而非string模塊。

re:正則表達式,強大的字符串模式匹配模塊。

struct:字符串和二進制之間的切換。

c/StringIO:字符串緩沖對象,操作方法類似於file對象。

base64:Base16,32,64數據編解碼。

codecs:解碼器注冊和基類。

crypt:進行單方面加密。

difflib:找出序列間的不同。

hashlib:多種不同安全哈系算法和信息摘要算法的API,python2.5廢除。

hma:HMAC信息鑒權算法的python實現。

md5:RSA的MD5信息摘要鑒權。

rotor:提供多平台的加解密服務。

sha:NIAT的安全哈系算法SHA

stringprep:提供用於IP協議的Unicode字符串。

textwrap:文本打包和填充。

unicodedata:Unicode數據庫

 

pickle: 只支持ASCII字符串,不兼容Unicode。

 

 

python列表——

python列表用方括號[]表示,有容器和可變的特性,這使得它非常靈活,用來構建其它的數據結構不是件難事,比如說堆棧或隊列。可以使用dir(list)命令在python交互式解釋器上查看列表內建函數,包括append、count、extend、index、insert、pop、remove、reverse、sort。

 

python元組——

python元組用圓括號()表示,是跟列表非常接近的另一種容器類型,不同的是,元組為不可變類型。所有多對象的、逗號分隔的、沒有明確用符號定義的集合的默認類型為元組。對於單元素元祖來說,('xyz')被認為是字符串類型,括號被認為是分組操作符,單元素元祖的正確表示方法是('xyz',),在第一個元素后面添加一個逗號。

 

下面再列舉一些與序列類型有關的模塊。

數組:一種受限制的可變序列類型,要求所有的元素必須都是相同的類型。

copy:提供淺拷貝和深拷貝能力,深拷貝deepcopy()只對可變類型有效。

operator:包含函數調用形式的序列操作符。

types:包含python支持的所有類型。

collections:高性能容器數據類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM