Python核心編程 6.序列:字符串、列表和元組

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 列表的特殊特性

相關文章
相關標籤/搜索