Python数据操作

在Python中有list、dictionary、Tuple等多种类似于数组的数据结构实现,可以帮助快速操作数据。

by openthings@163.com, 2016-04.

List,使用[a,b,c,...]方式声明。

列表是基础的数据结构。

In [9]:
alist = [0,1,2,3,4]
print("总计:",len(alist))
print("元素:", alist)
总计: 5
元素: [0, 1, 2, 3, 4]

字符串的列表。

In [20]:
colours = ["red","green","blue"]
for colour in colours:
    print(colour)
red
green
blue

列表的传统方式遍历。

In [24]:
for i in range(0,len(alist)):
    print(alist[i])
0
1
2
3
4

列表的递归方式遍历。

In [25]:
for i in alist:
    print(i)
0
1
2
3
4

可以直接调用一个列表。

In [26]:
for obj in [0,1,2,3,4]:
    print(obj)
0
1
2
3
4

** 创建一个矩阵。**

In [63]:
olist = [[11,12,13],[21,22,23],[31,32,33]]
for row in olist:
    print(row)
[11, 12, 13]
[21, 22, 23]
[31, 32, 33]

** 生成一个数据序列。在做数值检验时很有用。**

In [43]:
for obj in range(5):
    print(obj)
0
1
2
3
4

** 生成一个数据序列:range(开始值,结束值,步长)**

In [27]:
for obj in range(5,10,2):
    print(obj)
5
7
9

** String as a list of char. 字符串是字符数组。**

In [7]:
name='BeginMan'
for obj in range(len(name)):
    print('(%d)' %obj,name[obj])
(0) B
(1) e
(2) g
(3) i
(4) n
(5) M
(6) a
(7) n

Dictionary,词典,{key:value,...}

词典数据就是一系列k:v值对的集合。

In [30]:
dict = {'name':'BeginMan','job':'pythoner','age':22}

print("Dict Length: ",len(dict))
print(dict)
Dict Length:  3
{'age': 22, 'job': 'pythoner', 'name': 'BeginMan'}

*注意:上面的词典数据的输出与json表示是完全一致的,后面在json会专门介绍。*

词典的遍历:

In [71]:
dict["name"]
Out[71]:
'BeginMan'
In [41]:
print("Key","\t Value")
print("=================")
for key in dict:
    print(key,"\t",dict[i])
Key      Value
=================
age      BeginMan
job      BeginMan
name     BeginMan

dict的每一个item(obj)是一个二元组(下面介绍元组)。

In [31]:
for obj in dict.items():
    print(obj)
('age', 22)
('job', 'pythoner')
('name', 'BeginMan')
In [46]:
for k,v in dict.items():
    print(k,v)
age 22
job pythoner
name BeginMan

** Json的简单演示,将dict转为典型的json字符串表示。**

In [72]:
import json

j = json.dumps(dict)
print(repr(j))
'{"age": 22, "job": "pythoner", "name": "BeginMan"}'

** 从JSON字符串载入一个dict对象。**

In [53]:
d = json.loads('{"age": 22, "job": "pythoner", "name": "BeginMan"}')
print("Type of d: ", type(d))
print(d)
Type of d:  <class 'dict'>
{'name': 'BeginMan', 'job': 'pythoner', 'age': 22}

tuple,(obj1,obj2,...),元组

一个元组可包含多种类型的对象,不可修改。

In [59]:
tup = 'abc',1,2,'x',True
In [60]:
len(tup),tup
Out[60]:
(5, ('abc', 1, 2, 'x', True))

** 元组的赋值和取值。**

In [56]:
x,y =1,2
In [10]:
x,y
Out[10]:
(1, 2)

一个字典、元组构成的复合列表对象。

In [67]:
ao = [{"k1":"key","k2":2},(3,"element")]
ao
Out[67]:
[{'k1': 'key', 'k2': 2}, (3, 'element')]

** 访问这个符合对象的值。**

len(ao),ao[0]["k1"],ao[1][0],ao[1][1]

从上面可以看出,python的数据结构是非常灵活的,是数据探索和分析、处理的利器。