6.1 序列python
6.1.2 序列類型操做符git
seq[ind]:得到下標爲ind的元素api
seq[ind1:ind2]:得到下標從ind1到ind2間的元素集合函數
seq*expr:序列重複expr次spa
seq1+seq2:鏈接序列seq1和seq2code
obj in seq:判斷obj元素是否包含在seq中對象
obj not in seq:判斷obj元素是否不包含在seq中遞歸
--成員關係操做符(in, not in)索引
成員關係操做符使用來判斷元素是否屬於一個序列的。好比對字符串類型來講,就是判斷一個字符是否屬於這個字符串,對列表和元組類型來講,就表明了一個對象是否屬於該對象是否屬於該對象序列。in/not in 操做符的返回值通常來說就是True/False,知足成員關係就返回True, 不然返回False。ip
--切片操做符([], [:], [::])
我對切片一直運用不太熟練,因此這裏仔細研讀一下。
>>> a = '123456789' >>> a[2:4] '34' >>> a[2:-4] '345' >>> a[2:] '3456789' >>> a[-2:] '89' >>> a[:2] '12' >>> a[:-2] '1234567'
list[a:b]的這種類型:截取list中的元素從a開始到b結束。若是a爲空,則默認爲0;若是b爲空,則默認爲序列的長度。
>>> a[2::] '3456789' >>> a[::2] '13579' >>> a[2::3] '369'
list[a::b]的這種類型:從第a個開始,隔b取一次元素。若是a或者b爲空,則默認爲0。
>>> a[:5:2] '135' >>> a[:5:-2] '97'
list[:a:b]的這種類型:若b爲正數,則前a個數,每隔b個數取值;若b爲負數,則從序列最後到a這個元素,每隔b個數取值。
6.1.3 內建函數(BIFs)
序列自己就內涵了迭代的概念,之因此會這樣,是由於迭代這個概念就是從序列,迭代器,或者其餘支持迭代操做的對象泛化得來的。因爲python的for循環能夠遍歷全部的可迭代類型。
--類型轉換
list(iter)把可迭代對象轉換爲列表
str(obj)把obj對象轉換成字符串
tuple(iter)把一個可迭代對象轉換成一個元組對象
爲何Python裏面不簡單的把一個對象轉換成另外一個對象呢?一旦一個python的對象被創建,咱們就不能更改其身份或類型了。若是吧一個列表對象傳給list()函數,便會建立這個對象的一個淺拷貝,而後將其插入新的列表中。
所謂淺拷貝就是隻拷貝了對對象的索引,而不是從新創建了一個對象!若是想要徹底的拷貝一個對象(包括遞歸),則須要用到深拷貝。
內建函數
enumerate(iter):接受一個可迭代對象做爲參數,返回一個 enumerate 對象(同時也是一個迭代器),該對象生成由 iter 每一個元素index 值 和 item 值組成的元組
len(seq):返回 seq 的長度
max(iter,key=None) or max(arg0,arg1...,key=None):返回iter或(arg0,arg1,...)中的最大值,若是指定了key,這個 key 必須是一個能夠傳給 sort()方法的,用於比較的回 調函數.
min(iter, key=None) or min(arg0, arg1.... key=None):返回 iter 裏面的最小值;或者返回(arg0,arg2,...)裏面的最小值;若是指定了 key,這個 key 必須是一個能夠傳給 sort()方法的,用於比較的回調函數.
reversed(seq):接受一個序列做爲參數,返回一個以逆序訪問的迭代器
sorted(iter, func=None, key=None, reverse=False):接受一個可迭代對象做爲參數,返回一個有序的列表;可選參數 func,key 和 reverse 的含義跟 list.sort()內建函數的參數含義一 樣.
sum(seq, init=0):返 回 seq 和 可 選 參 數 init 的 總 和 , 其 效 果 等 同 於 reduce(operator.add,seq,init)
zip([it0, it1,... itN]):返回一個列表,其第一個元素是 it0,it1,...這些元素的第 一個元素組成的一個元組,第二個...,類推.
>>> alist = ['a', 'b', 'c'] >>> blist = [1,2,3] >>> z = zip(alist, blist) >>> z [('a', 1), ('b', 2), ('c', 3)] >>> for m,n in zip(alist, blist): ... print m, n ... a 1 b 2 c 3 >>> for m,n in enumerate(alist): ... print m, n ... 0 a 1 b 2 c
6.2 字符串
--字符串的建立和賦值
建立一個字符串就想使用一個標量同樣簡單.
>>> aString = 'Hello world!' >>> anotherString = 'Python is cool!' >>> print aString Hello world! >>> anotherString 'Python is cool!' >>> s = str(range(4)) >>> s '[0, 1, 2, 3]'
--訪問字符串的值(切片的方式)
6.6 內建函數
string.capitalize() 把字符串的第一個字符大寫
string.center(width) 返回一個原字符串居中,並使用空格填充至長度width的新字符串
string.count(str, beg = 0, end = len(string)) 返回str在string裏面出現的次數,若是beg或者end指定則返回指定範圍內str出現的次數
string.endswith(obj, beg = 0, end = len(string))檢查字符串是否以obj結束,若是beg或者end指定則檢查指定的範圍內是否以obj結束,是返回True,不然返回False
string.find(str, beg = 0, end = len(string)) 檢查str是否包含在string中,若是beg和end指定範圍,則檢查是否包含在範圍內,若是是返回開始的索引值,不然返回-1
string.index(str, beg = 0, end = len(string)) 跟find方法同樣,只不過若是str不在string中會報一個異常
string.isalnum() 若是string至少有一個字符而且全部字符都是字母或數字則返回True,不然返回False
string.isalpha() 若是string至少有一個字符而且全部字符都是字母則返回True,不然返回False
string.isdigit() 若是string只包含數字則返回True,不然返回False
string.islower() 若是string中包含至少一個區分大小寫的字符,而且全部這些字符都是小寫,則返回True,不然返回False
string.isnumeric() 若是string中只包含數字字符,則返回True,不然返回False
string.isspace() 若是string中只包含空格,則返回True,不然返回False
等等,不所有抄上來了
內建函數
cmp():
>>> a = ['123', 'abc'] >>> b = ['123'] >>> cmp(a,b) 1 >>> cmp(b,a) -1 >>> cmp(a,a) 0
len(), max(), min()省略
sorted(), reversed():
>>> alist = ['123', '456', 'qwe', '2se'] >>> sorted(alist) ['123', '2se', '456', 'qwe'] >>> for i in reversed(alist): ... print i ... 2se qwe 456 123
enumerate(), zip()省略
sum():
>>> alist = [1,2,3.0,5] >>> sum(alist) 11.0 >>> sum(alist,3) 14.0
6.15 列表的特殊特性