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']
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
元組和列表大部分相同,惟一區別在於元組是不可變的!python
不可變的真正含義是:元組內每一個元素所指向的地址不變!因此當元組內的元素是列表時,能夠改變這個列表內的元素的值,由於自己這個列表的地址並無所以而改變。算法
>>>t=(1,) ##逗號不能夠省略 >>>list=[1,2,3] >>>t=tuple(list) ##列表轉換爲元組 (1,2,3)
##使用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'}
>>>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'}
>>>list=['name','id','city'] ##能夠本身設置值是什麼,默認爲None >>>dict.fromkeys(list,'unknow') {'name':'unknow','id':'unknow'}
##即便不存在,不會返回異常,而是返回None
>>>x={'id': 19, 'name': 'Jack', 'city': 'BeiJing'} >>>x.items() dict_items([('id', 19), ('name', 'Jack'), ('city', 'BeiJing')])
##返回爲列表形式 >>>x={'id': 19, 'name': 'Jack', 'city': 'BeiJing'} >>>x.keys() >>>x.values() dict_keys(['id', 'name', 'city']) dict_values([19, 'Jack', 'BeiJing'])
##用另外一份字典來更新字典,存在則覆蓋,不存在則添加 >>>x={'id': 19, 'name': 'Jack', 'city': 'BeiJing'} >>>y={'uc':'I'} >>>x.update(y) {'id': 19, 'name': 'Jack', 'city': 'BeiJing','uc':'I'}
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) ##超集
>>>[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"]
列表生成式在元素量較少時推薦使用,可是在大量元素時,有時並不須要中間某些元素的意義,只須要一個算法推演,因而在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)