python-序列


     序列: 字符串,列表,元組
1,定義:
   序列: 成員有序排列,並且成員可以通過下標偏移量訪問

2,序列類型操作符
   1, 成員關係操作符
       in/not in  判斷一個對象是否屬於該對象序列
   2, 連接操作符
       +          把一個序列和另一個相同的序列做連接
   3, 重複操作符
       *          拷貝多分序列
   4,切片操作符
       []\[:]\[::]
3,類型轉換
   unicode()
   basestring()
   tuplue()
   知識點:關於深拷貝和淺拷貝
代碼場景:有一個小夥jack,tom通過切片操作拷貝jack,anny通過工廠方法拷貝jack。

>>> jack = ['jack', ['age', 20]]
>>> tom = jack[:]
來看下三者的id值:

>>> print id(jack), id(tom), id(anny)
144846988 144977164 144977388

從id值來看,三者是不同的對象。爲tom和anny重新命名爲各自的名稱:

>>> tom[0] = 'tom'
>>> anny[0] = 'anny'
>>> print jack, tom, anny
['jack', ['age', 20]] ['tom', ['age', 20]] ['anny', ['age', 20]]

從這裏來看一切正常,可是anny只有18歲,重新爲anny定義歲數。

>>> anny[1][1] = 18
>>> print jack, tom, anny
['jack', ['age', 18]] ['tom', ['age', 18]] ['anny', ['age', 18]]


>>> [id(x) for x in jack]
[3073896320L, 3073777580L]
>>> [id(x) for x in tom]
[144870744, 3073777580L]
>>> [id(x) for x in anny]
[144977344, 3073777580L]


2、利用copy中的deepcopy方法進行拷貝

爲了讓他們之間不互相影響,用deepcopy來試試

>>> jack = ['jack', ['age', '20']]
>>> import copy
>>> tom = copy.deepcopy(jack)
>>> anny = copy.deepcopy(jack)

根據第一個思路進行重命名,重定歲數操作:

>>> tom[0] = 'tom'
>>> anny[0] = 'anny'
>>> print jack, tom, anny
['jack', ['age', '20']] ['tom', ['age', '20']] ['anny', ['age', '20']]
>>> anny[1][1] = 18
>>> print jack, tom, anny
['jack', ['age', '20']] ['tom', ['age', '20']] ['anny', ['age', 18]]

這時候他們之間就不會互相影響了。打印出每個人的內部元素每個id:

>>> [id(x) for x in jack]
[139132064, 3073507244L]
>>> [id(x) for x in tom]
[139137464, 139132204]
>>> [id(x) for x in anny]
[139141632, 139157548]

他們的內部元素也都指向了不同的對象。

小結:

思路一:利用切片操作和工廠方法list方法拷貝就叫淺拷貝,只是拷貝了最外圍的對象本身,內部的元素都只是拷貝了一個引用而已。

思路二:利用copy中的deepcopy方法進行拷貝就叫做深拷貝,外圍和內部元素都進行了拷貝對象本身,而不是引用。


                                                                      字符串
1,創建字符串
2,訪問字符串的值
 isstr=[0]\isstr=[2:]
3,改變字符串的值
 isstr=astr[3:] + bstr[:5]
4,刪除字符串和字符串的值
 isstr=''
 del isstr

字符串和操作符
  比較操作符: =\< > \ !=
  切片操作符:[] \ [:]  切片,正反向切片,而不能夠進行反轉
  成員操作符: in  not in
  連接符:    +
內建函數
cmp()  比較大小
len()
max() and min()
enumerate()
zip()
raw_input()
str()
                                                                       列表
1,創建列表
  list1=[]
2,訪問列表
  list1[1:3]
  list1[2:5]
3,更新列表
  list1.append()
  list1.insert(2)=x
4,刪除列表
  del list1

操作符
 = < > !=
 [] [:]
   +
   *
內建函數
cmp()
len()
max()
min()
sorted()
reversed()
enumerate()
zip()
sum()
list()
tuple()
列表類型內建函數
list.append()
list.count()
list.extend()
list.insert()
list.pop()
list.remove()
list.reverse()
list.sort()

列表的特殊特性:  暫時不看!
1,堆棧
2,隊列
                                                                      元組

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章