Python Array

python 處理array主要有以下三種方式
list ,dict , tuple

…………………….

LIST

key只能為0,1,2,….,第一個元素的key為0

宣告
a=list()

宣告並直接給元素
a = [2, ‘abc’, 10]

顯示
print a[2]
顯示第3個元素,結果如下
10

選取一段範圍
print a[0:2]
取出 a[0], a[1] 而不包含 a[2]
結果如下
[2, ‘abc’]

附加
a.append(‘good’)
print a
結果如下
[2, ‘abc’, 10, ‘good’]

元素數量
print len(list)
結果如下
4

插入
a.insert(2,’cool’)
print a
結果如下
[2, ‘abc’,’cool’,10, ‘good’]

集合運算
list1=[0,1,2,3]
list2=[2,3,4,5]
print list(set(list1) & set(list2)) #交集, 輸出[2, 3]
print list(set(list1) | set(list2)) #聯集, 輸出[0, 1, 2, 3, 4, 5]
print list(set(list1) ^ set(list2)) #差集, 輸出[0, 1, 4, 5]

取唯一
list1=[0,0,1,1,2,2,3,3]
print list(set(list1))
結果如下
[0, 1, 2, 3]

….

應用

int轉float
l1 = [1,2,3,4,5]
l2 = [float(i) for i in l1]
print l2
[1.0,2.0,3.0,4.0,5.0]

顯示sparse matrix

顯示以下5*6矩陣資料
0 0 0 0 0 0
0 3 0 0 0 0
0 0 0 6 0 0
0 0 9 0 0 0
0 0 0 0 12 0

def restore(sparse):
 row = sparse[0][0]
 column = sparse[0][1]
 array = [[0] * column for i in range(row)]
 k = 1
 for i in range(row):
  for j in range(column):
   if k <= sparse[0][2] and i == sparse[k][0] and j == sparse[k][1]:
    array[i][j] = sparse[k][2]
    k += 1
   else:
    array[i][j] = 0
 return array

sparse = [
[5, 6, 4],
[1, 1, 3],
[2, 3, 6],
[3, 2, 9],
[4, 4, 12]
]
array = restore(sparse)
print(array)

說明
使用的陣列第一列記錄:列數,行數,非0元素個數
因為這個矩陣是5X6矩陣,且非0元素有4個(3,6,9,12)
5 6 4
使用的陣列第二列,記錄位置:列索引,行索引,儲存值:
1 1 3
2 3 6
3 2 9
4 4 12

refer
http://blog.eddie.com.tw/2011/10/13/python-list/

DICT

key可以用任何字串表示

dictdata=dict()
宣告dictdata為dict結構
ex:
dictdata=dict()
dictdata[‘url1’]=1
dictdata[‘url2’]=2
print dictdata
結果如下
{‘url1’: 1, ‘url2’: 2}

dictdata.get(key)
判斷dictdata[key]是否存在
ex:
if dictdata.get(‘url1’) != None
print ‘url1 exist’
結果如下
url1 exist

dictdata.keys()
結果如下
[‘url1’, ‘url2’]
ex:
判斷aaa的key是否在dictdata中
if ‘url1′ in dictdata.keys():
print ‘url1 in dictdata’
結果如下
url1 in dictdata

dictdata.values()
結果如下
[1, 2]

dictdata.items()
結果如下
[(‘url1’, 1), (‘url2’, 2)]
ex:
列出dict資料中的key和value
for key,value in dictdata.items():
print key, value
結果如下
url1 1
url2 2

排序
dictdata.iteritems()
ex:
dictdata = {‘a’:6, ‘b’:5, ‘c’:3, ‘d’:4, ‘e’:7, ‘d’:0}
dicsorted= sorted(dictdata.iteritems(), key=lambda d:d[1], reverse = True)
print dicsorted
結果為
[(‘e’,7),(‘a’,6),(‘b’,5),(‘d’,4),(‘d’,0)]
ps:
reverse = True 表示由多到小排序
ex:
for key in sorted(mydict.iterkeys()):
print “%s: %s” % (key, mydict[key])

LEN 算長度
>>> mylist = [1,2,3] #list
>>> len(mylist)
3
>>> word = ‘hello’ # string
>>> len(word)
5
>>> vals = {‘a’:1,’b’:2} #dictionary
>>> len(vals)
2
>>> tup = (4,5,6) # tuple
>>> len(tup)
3