標籤:
列表、元組、字串這些通過順序訪問的對象統稱為序列。
序列的標準操作符
對於一般的序列對象,包括列表、元組、字串,都具有以下的標準操作:
1. element [not] in seq判斷一個元素是否屬於一個序列,返回一個布爾值;
2. seq[ind] 獲得下標為ind的元素
3. seq[ind1:ind2:step] 獲得一個切片,從ind1到ind2,步長為step的元素組成的新的序列,步長為負值來表示從尾端開始;
4.seq1 + seq2 串連兩個序列;
5.seq * expr 序列重複expr次;
序列的索引從0開始,也可以用-n來表示最後第n個元素。
特殊的,對於None值,如果進行切片操作,返回原序列。Python中的None值有些奇怪,他並不表示空,而且具有自己的類型NoneType,且該類無法被執行個體化(應該是執行了類似於添加NoneType的單件類,並且修改了new方法的操作)。
同時序列也提供內建函數,如各種轉換函式(工廠函數),以及一些可操作函數:enumerate(iter),len(seq),reversed(seq)等等
序列的內建函數
1 cmp():比較第一個參數是否大於第二個,字串去ascall碼
2 len():返回序列中元素的個數
3 max()、min():返回最大值、最小值
4 enumerate():返回一個enumerate對象,儲存每個元素的位置和值的資料對,用於迴圈:
for i,t in enumerate(s):
? ? print i,t
5 sorted():
sorted()函數可以對傳入的列表進行排序,只要類具有__cmp__()方法,都可以使用sorted()方法;並且可以傳入一個參數,用來替代預設的__cmp__()方法,從而定製自己的定序:
def cmp_ignore(x,y):
? ? if x.upper() > y.upper():
? ? ? ? return 1
? ? elif x.upper() < y.upper():
? ? ? ? return -1
? ? else :
? ? ? ? return 0
print sorted(["aasdDEAD","BD","Abcd"])
print sorted(["aasdDEAD","BD","Abcd"],cmp_ignore)
若對字串進行sorted()方法,則返回按ascall碼排序後的結果
6 reversed():返回翻轉後的列表
?
字串
除了具有序列的一半特性之外,字串還具有一些特殊的性質。
1格式化操作符% : format_string % arguments_to_convert,一般的格式和c語言中printf()類似,但是具有新的特性:字典型別參數,如?‘This is %(name)s‘ % {‘name‘:‘Lyon’} 。
2 字串模板:對字典型別參數的格式化進行封裝,而且不需要再指定輸出的類型,而採用形如shell、perl中的$符號來表示需要填充的參數,就是字串模板:Template,Template具有兩個方法:substitute()和safe_substitute(),前者當缺少參數時會報錯,而後者則會將字串原封不動地顯示出來:
3 原始字串操作符:
r/R:所有的字串都將不進行轉義、插值等操作,而是原始字串 : r’\n‘
4 unicode字串操作符:u’abc’ 表示將abc分別用unicode編碼錶示 , u’\u1234‘表示unicode編碼為1234,python3之後為預設
5 三引號:’’’ :三引號中可以包含斷行符號換行等特殊字元
6 字串特有內建函數:
string.capitalize()表示首字母大寫,其他小寫;string.lower(),改為小寫;sting.upper(),改為大寫;string.title(),所有的單詞都是以大寫開頭,其餘小寫;string.split(str=“”),以str為分隔字元切分等等;
7 字串和其他順序訪問類型不同,字串不是容器,而是值,不可改變
列表
1 建立列表 :
a = [0,1, 2, 3, 4]
a = range(5)
a = [0 for x in range(5)] ? ## [0,0,0,0,0]
2 內建函數:
sum():返回列表值的和,相當於reduce(operator.add,list)
reduce():對傳入的列表按照傳入的函數兩兩計算,如reduce(operator.add,[1,2,3,4]),則先算1+2,再將結果+3,再將結果+4,依次類推,如果加上第三個選擇性參數可以指定初始值
list.append(obj):向列表中添加一個對象obj
list.count(obj):統計obj出現次數
list.extend(seq):將seq內容添加到list中
list.index(obj,i=0;j=len(list)):返回obj在list中的位置
list.insert(index,obj),在index處插入obj
list.pop(index=-1):刪除並返回指定位置的對象,預設為最後一個
list.remove(obj),刪除對象
區別sort()、sorted()、reverse()、reversed()、extend()、extended():是否改變調用者/數值調用還是引用調用
元組
元組是不可變的列表,和列表比較類似
Python學習_03_列表、元組、字串