3_組合數據類型

1. 列表

       1.1 列表的經常使用操做

list=[0,1,2,3,4,5,6,7,8,9,10]
list1=[11,12]

>>>list[1:5]                    ##列表切片,左閉右開
[1, 2, 3, 4]

>>>list[1:5:2]                  ##控制跳轉步幅
[1,3]

>>>list[::2]                    ##經常使用的步幅跳轉策略
[0, 2, 4, 6, 8, 10]

>>>for x in list:               ##列表遍歷
    print(x)
0
1
2
3
4
5
6
7
8
9
10   

>>>list+=list1                  ##兩種方法合併列表
>>>list.extend(list1)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

>>>list.append('T')             ##在列表末尾添加元素
[0,1,2,3,4,5,6,7,8,9,10,'T']

>>>list.insert(0,'x')           ##指定位置添加元素
['x',0,1,2,3,4,5,6,7,8,9,10,'T']

>>>list.count('x')              ##計數某元素出現的次數
1

>>>list.index('x')              ##返回某元素第一次出現的位置,不在則會返回異常
0

>>>del list[0]                  ##刪除指定位置的元素
[0,1,2,3,4,5,6,7,8,9,10,'T']
    
>>>list.remove('T')             ##順序檢索刪除指定元素一次,不在則會返回異常
[0,1,2,3,4,5,6,7,8,9,10]

>>>list.pop(2)                  ##刪除並返回指定位置的元素,缺省爲末尾
2
>>>list
[0,1,3,4,5,6,7,8,9,10]

>>>s='Hello'                    ##字符串轉化爲列表
>>>t=list(s)
>>>t
['H','e','l','l','o']

       1.2 列表的經常使用函數

list1=[123,213]
list2=[123,321]
list3=[123,123]

>>>cmp(list1,list2)             ##列表比較
-1
>>>cmp(list1,list2)
1
>>>cmp(list1,list3)
0

>>>max(list1)                   ##最大值
213
>>>min(list2)                   ##最小值
123
>>>sum(list1)                   ##求和
336


2. 元組

       元組和列表大部分相同,惟一區別在於元組是不可變的!python

       不可變的真正含義是:元組內每一個元素所指向的地址不變!因此當元組內的元素是列表時,能夠改變這個列表內的元素的值,由於自己這個列表的地址並無所以而改變。算法

>>>t=(1,)                       ##逗號不能夠省略

>>>list=[1,2,3]                 
>>>t=tuple(list)                ##列表轉換爲元組
(1,2,3)


3. 字典

       3.1 字典的經常使用操做

##使用zip函數結合兩個元組建立字典
>>>d=dict(zip(('id','name','city'),(19,'Jack','BeiJing')))
{'id': 19, 'name': 'Jack', 'city': 'BeiJing'}

>>>for key in d.keys():         ##字典遍歷
    print(key,d[key])
id 19
name Jack
city BeiJing

>>>del d['id']                  ##刪除指定的鍵值對
{'name': 'Jack', 'city': 'BeiJing'}

>>>d.pop('city')                ##使用popitem能夠隨機刪除
'BeiJing'
>>>d
{'name': 'Jack'}

       3.2 字典的經常使用函數

              3.2.1 深淺拷貝
>>>x={'id': 19, 'name': 'Jack', 'city': 'BeiJing'}
>>>y=x,copy()                   ##淺拷貝,只是原來對象的一個引用
{'id': 19, 'name': 'Jack', 'city': 'BeiJing'}

>>>from copy import deepcopy
>>>de_y=deepcopy(x)             ##導入模塊進行深拷貝
{'id': 19, 'name': 'Jack', 'city': 'BeiJing'}
              3.2.2 給定鍵創建字典
>>>list=['name','id','city']    ##能夠本身設置值是什麼,默認爲None
>>>dict.fromkeys(list,'unknow')     
{'name':'unknow','id':'unknow'}
              3.2.3 get()方法訪問
##即便不存在,不會返回異常,而是返回None
              3.2.4 items方法
>>>x={'id': 19, 'name': 'Jack', 'city': 'BeiJing'}
>>>x.items()
dict_items([('id', 19), ('name', 'Jack'), ('city', 'BeiJing')])
              3.2.5 獲取鍵、值列表
##返回爲列表形式
>>>x={'id': 19, 'name': 'Jack', 'city': 'BeiJing'}
>>>x.keys()
>>>x.values()
dict_keys(['id', 'name', 'city'])
dict_values([19, 'Jack', 'BeiJing'])
              3.2.5 update方法
##用另外一份字典來更新字典,存在則覆蓋,不存在則添加
>>>x={'id': 19, 'name': 'Jack', 'city': 'BeiJing'}
>>>y={'uc':'I'}
>>>x.update(y)
{'id': 19, 'name': 'Jack', 'city': 'BeiJing','uc':'I'}


4. 集合

s=set([1,2,3,4,])

>>>s.add(5)                     ##添加元素
{1,2,3,4,5}

>>>s.remove(4)                  ##刪除元素,不存在會報錯
{1,2,3,5}

>>>s.discard(4)                 ##刪除元素,不存在不會報錯
{1,2,3,5}

`````````````````````````````````````````````````````````````````````````````````````
s1=set([1,2,3,4])
s2=set([3,4,5,6,7])

>>>s1.intersection(s2)          ##交集
>>>s1 &s2
{3,4}

>>>s1.union(s2)                 ##並集
>>>s1 | s2
{1,2,3,4,5,6,7}

>>>s1.difference(s2)            ##差集
>>>s1-s2
{1,2}

>>>s1.symmetric_difference(s2)  ##對稱差集
>>>s2.symmetric_difference(s1)
{1,2,5,6,7}

s1.issubset(s2)                 ##子集

s1.issuperset(s2)               ##超集


5. 列表生成式

>>>[x*x for x in range(1,11) if x % 2 == 0]
[4,16,36,64,100]

>>>[m + n for m in "AB" for n in "XY"]
["AX","AY","BX","BY"]


6. 生成器——generator

       列表生成式在元素量較少時推薦使用,可是在大量元素時,有時並不須要中間某些元素的意義,只須要一個算法推演,因而在python中,一邊循環一邊計算的機制,就叫生成器——generatorapp

##將列表生成式的[]改爲()便可獲得生成器
L = [x*x for x in range(1,11)]
G = (x*x for x in range(1,11))

>>>next(G)                      ##簡單的獲得下一個元素
1
>>>next(G)
4

>>>def fib(max):                ##利用yield生成一個斐波那契數列的生成器
    n,a,b=0,0,1
    while n<max:
        yield b
        a,b=b,a+b
        n+=1
    return 'done'
>>>f=fib(6)
相關文章
相關標籤/搜索