一. 通用序列操作:
其實對于列表,元組 都屬于序列化數(shù)據(jù),可以通過下表來訪問的。下面就來看看序列的基本操作吧.
1.1 索引:
序列中的所有元素的下標是從0開始遞增的. 如果索引的長度的是N,那么所以的范圍是-N~N-1之間,超過這個范圍就會提示 IndexError: index out of range
>>> greeting ='Hello world'>>> PRint greetingHello world>>> print greeting[0],greeting[-1]H d
1.2 分片:
A.簡單的分片:
分片是基于索引基礎(chǔ)上的,可以理解為取一定區(qū)域的數(shù)據(jù),和C#中的substring差不多,以及C#Linq提供的skip()和take()方法.
Note:[A:B] A,B分別對應(yīng)索引的下標,取值區(qū)域是[A,B)(學(xué)過數(shù)學(xué)的都知道不包含B). 注意意見是B必須大于A,否則輸出為空,那么問題里了為何web[9:-1]有數(shù)據(jù),請仔細想一想,其實-1的下標數(shù)據(jù)等價于m的下標12,12>9所以有數(shù)據(jù). 那么對于web[9:-5] 就悲劇了.
>>> web ='www.baidu.com'>>> print web[4:9] #4對于的bbaidu>>> print web[9:-5] #
>>> print web[9:-1] #9對應(yīng)的第二個'.' -1對應(yīng)的m.co
B.等差數(shù)列形式的分片:
默認情況下是按照下標間隔為1的時候,進行獲取的,其實可以通過第三個參數(shù)來進一步分割.[A:B:間隔數(shù)], 10個數(shù)字沒兩個取1次.
>>> number =[1,2,3,4,5,6,7,8,8,10]>>> print number[0:10:2][1, 3, 5, 7, 8]
>>> print number[::-2]
[10, 8, 6, 4, 2]
>>> print number[::2]
[1, 3, 5, 7, 8]
1.3 序列相加:
同類型的可以想加,不同類型的會報錯Type Error
>>> [1,2,3] + [4,5][1, 2, 3, 4, 5]>>> [1,2,3] +['hello'][1, 2, 3, 'hello']>>> [1,2,3]+'hello'Traceback (most recent call last): File "<pyshell#41>", line 1, in <module> [1,2,3]+'hello'TypeError: can only concatenate list (not "str") to list>>>
1.4 乘法:
覺得Python的乘法很有意思,可以理解為對現(xiàn)有的數(shù)據(jù)的一種多個Copy.
>>> [1]*10[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]>>> 'New '*10'New New New New New New New New New New '
1.5 有用方法.
通過in可以Check元素是否存在,max,min,len,count分別獲取最大值,最小值,長度,包含數(shù)量
>>> number =[1,2,2,3,3,4,5,7]>>> print 'Max Number:' + str(max(number))Max Number:7>>> print '2的數(shù)量是:' + str(number.count(2))2的數(shù)量是:2>>> print 'number列表的長度是:' + str(len(number))number列表的長度是:8
二. 列表.
列表可以理解為C語言中的鏈表.或者C#中的List<Object>,列表可以實現(xiàn)上面出現(xiàn)的通用序列號操作,可以對列表進行增,刪,改,查,排序等方法
2.1 列表的基礎(chǔ)
>>> print list('123') #功過【】可以將字符串轉(zhuǎn)換為列表['1', '2', '3']>>> list1=[1,2,3] # 通過[]聲明列表>>> list2 = list(123) #123是整形,不存在索引,所以轉(zhuǎn)換的時候報錯了。Traceback (most recent call last): File "<pyshell#53>", line 1, in <module> list2 = list(123)TypeError: 'int' object is not iterable
2.2 列表的基本操作
A 增,刪,改
>>> numbers =[1,2,3,4,5]>>> numbers[0]=5; #修改>>> print numbers[5, 2, 3, 4, 5]>>> numbers.remove(5) #刪除value值為5的>>> print numbers[2, 3, 4, 5]>>> del numbers[0] #刪除第一個元素>>> print numbers[3, 4, 5]>>> numbers.append(7) #在尾部添加一個元素>>> print numbers[3, 4, 5, 7]
B 分片賦值【神奇的分片操作】
整體替換
>>> Greeting= [1,2,3,4,5]
>>> Greeting[1:] = [0,0]
>>> Greeting
[1, 0, 0]替換區(qū)間
>>> Greeting= [1,2,3,4,5]>>> Greeting[1:2]=[0,0,0]>>> Greeting[1, 0, 0, 0, 3, 4, 5]
批量添加,用[0,0,0]替換[]
>>> Greeting=[1,2,3,4,5]>>> Greeting[1:1]=[0,0,0]>>> Greeting[1, 0, 0, 0, 2, 3, 4, 5]
批量刪除,用[]替換[2,3,4]
>>> Greeting=[1,2,3,4,5]>>> Greeting[1:4]=[]>>> Greeting[1, 5]
Note:對于種種操作其實都可以理解為一個替換。
2.3 列表的方法.
>>> Number =[1,2,3,4,5]>>> Number.extend([6,7,8]) #添加一個列表,必須是列表>>> Number[1, 2, 3, 4, 5, 6, 7, 8]>>> Names =['Frank','Lock','Vincent','Tingna']>>> Names.index('Lock') #通過Index取下標1>>> Names.insert(2,'Hardy')>>> Names['Frank', 'Lock', 'Hardy', 'Vincent', 'Tingna']>>> Names.pop() #最有一個元素刪除'Tingna'>>> Names['Frank', 'Lock', 'Hardy', 'Vincent']>>> Names.pop(0) #踢出第一個元素'Frank'>>> Names['Lock', 'Hardy', 'Vincent']>>> Names.reverse() #反序>>> Names['Vincent', 'Hardy', 'Lock']>>> Names.sort() #從小到達>>> Names['Hardy', 'Lock', 'Vincent']>>> Names.sort(key=len) #通過長度排序>>> Names['Lock', 'Hardy', 'Vincent']>>> Names.sort(reverse=True) #從大到小>>> Names['Vincent', 'Lock', 'Hardy']
三. 元組不可變序列
通過()號聲明,與list的區(qū)別在于一旦聲明后不可變.
>>> tuple1 = (1,2,3)>>> tuple1(1, 2, 3)>>> tuple(list('hello'))('h', 'e', 'l', 'l', 'o')>>>
四. 總結(jié)
本章總結(jié)了Python基礎(chǔ)教程里面的列表和元組,其實整體來說和.net區(qū)別不算太大.比如奇妙的切片操作其實就是簡化了.net里面的addrang,revomeall這些方法. 確實正如書里面所說Python可以用100行代碼做到C語言1000行代碼所需要完成的事情. 好了洗洗睡睡了.求明天公司年會能抽中Iphone土豪金大獎,哈哈哈.
[利用一個月的下班之余看完P(guān)ython基礎(chǔ)教程,完成基礎(chǔ)教程學(xué)習(xí)博客系列.加油!]
新聞熱點
疑難解答