文章目錄
教為學:Python學習之路(三):序列概論
Python的序列總共有六種內建序列:
列表、元組、字串、Unicode字串、buffer對象和xrange對象。
我們主要講的是列表和元組。這兩者最大的區別是列表是可以修改的,元組是不可以被修改的。
序列的特徵就是會為每一個元素分配一個序號,從零開始是第一個,反過來從最後一個開始是-1…-n。
序列的通用操作索引
代碼:
- #coding:utf-8
- months1=["1","2","3","4","5","6","7","8","9","10","11","12"]
- mouths2=("1","2","3","4","5","6","7","8","9","10","11","12")
- print months1
- print mouths2
-
- print type(months1)
- print type(mouths2)
-
- print months1[1]
- print months1[-1]
結果:
- ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
- ('1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12')
- <type 'list'>
- <type 'tuple'>
- 2
- 12
所謂索引,有過其他語言編程經驗的都知道,有個叫數組下標的東西,不過,索引更強大,可以反向,而其他語言一般都不可以。
當然索引也是序列的主要特徵。
如果要在形式上區分這兩者,中括弧包圍的是列表,小括弧包圍的是元組。
當然在這裡我們還要還要介紹一個非常強大的命令dir:
源碼:
- months1=["1","2","3","4","5","6","7","8","9","10","11","12"]
- mouths2=("1","2","3","4","5","6","7","8","9","10","11","12")
- print dir(months1)
- print dir(mouths2)
結果:
- ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
- ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
這裡是列出該變數所能用的所有方法。
分區
分區和索引的區別在於索引是用來訪問一個元素,而分區是用來訪問一組元素。
- months=["1","2","3","4","5","6","7","8","9","10","11","12"]
- #從序號3到序號5
- print months[3:6]
- #從序號0到序號3
- print months[:3]
- print months[0:3]
- #加入步長
- print months[::1]
- print months[::2]
- print months[::3]
結果:
- ['4', '5', '6']
- ['1', '2', '3']
- ['1', '2', '3']
- ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12']
- ['1', '3', '5', '7', '9', '11']
- ['1', '4', '7', '10']
分區這東西聽起來很神奇,做起很簡單。
兩個冒號隔離三個部分,起始位置,結束位置+1,步劃
算數運算
源碼
- a=[1,2,3]
- b=[4,5,6]
- print a+b
- print a*5
結果:
- [1, 2, 3, 4, 5, 6]
- [1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3]
理解起來並不困難。
常用函數
- a=[1,2,3]
- print len(a)
- print max(a)
- print min(a)
結果:
- 3
- 3
- 1
列表
- a=[1,2,3]
- a.append(4)
- print a
- a=[1,1,1,2,2,3]
- print a.count(1)
- print a.count(2)
- print a.count(3)
- a=[1,2,3]
- b=[4,5,6]
- print a+b
- a.extend(b)
- print a
- print a.index(4)
- a.insert(3,'aaaa')
- print a
- print a.pop()
- print a
- print a.remove('aaaa')
- print a
- print a.reverse()
- print a
- a=[3,312,342,23,6,9]
- print a
- a.sort()
- print a
結果:
- [1, 2, 3, 4]
- 3
- 2
- 1
- [1, 2, 3, 4, 5, 6]
- [1, 2, 3, 4, 5, 6]
- 3
- [1, 2, 3, 'aaaa', 4, 5, 6]
- 6
- [1, 2, 3, 'aaaa', 4, 5]
- None
- [1, 2, 3, 4, 5]
- None
- [5, 4, 3, 2, 1]
- [3, 312, 342, 23, 6, 9]
- [3, 6, 9, 23, 312, 342]
對於這一大對的方法,除了我們上面所說的dir查看有什麼方法之外,還有一個方法可以用,查看方法的用法。
代碼
- a=[1,2,3]
- help(a.insert)
結果如下:
- insert(...)
- L.insert(index, object) -- insert object before index
元組
元組本質上是一個去除修改內容的列表,一切可以修改列表內容的函數都不可用。