以Mark Lutz著的《Python学习手册》为教程,每天花1个小时左右时间学习,争取两周完成。 --- 写在前面的话
2013-7-16 15:00 学习笔记
1,在Python中,数据以对象的形式存在。
2,Python的内置对象:
对象类型 | 例子 |
数字 | 1234, 3.14, 999L, 3+4j, Decimal |
字符串 | 'hello world' |
列表 | [1, [2, 'three'], 4] |
字典 | {'name': 'mo', 'age': 20} |
元组 | (1, 'name', 2, 'age') |
文件 | myfile = open('myscript', 'r') |
其它类型 | 集合、类型、None、布尔型 |
3,Python支持基本的数学运算,值得一提的是乘方运算 **,例如2**100表示2的100次方。还有一些内置的数学模块可以使用,例如math和random。
import math
print math.pi
print math.sqrt(96)
import random
print random.random()
print random.choice([1,2,3,4])
4,在Python中,字符串是一种序列,并支持分片(Slice)操作,类似Matlab。一般形式为X[i:j],表示“取出在X中从偏移i开始,但不包括j的内容”。
S = 'mathboy'
print len(S)
print S[0],S[-1],S[-2]
print S[1:4],S[1:],S[:5],S[:-1],S[:]
print S+'linlin'
print S*3
输出结果为:
7
m y o
ath athboy mathb mathbo mathboy
mathboylinlin
mathboymathboymathboy
字符串在Python中具有不可变性,因此不能通过对某个位置赋值而改变字符串的内容。例如S[0]='K'是不对的,要实现类似的功能可以这样写:
S = 'K' + S[1:]
既然字符串是一种对象类型,那它也就具有自己的方法属性。例如:
S.find('boy')
S.replace('boy', 'girl')
可以通过dir(S)的方式来打印所有的属性,并通过类似help(S.find)的方式来打印帮助信息
字符串也是支持转义字符的,例如:
S = 'math\0boy\nlin\tlin'
这里的\0并不表示字符串终结。
Python可以使用"""来表示多行字符串,类似PHP中的HereDoc。例如:
S = """mathboy
like programming
and love mo"""
模块re支持字符串的模式匹配。例如:
import re
match = re.match('/(.*)/(.*)/(.*)', '/usr/home/bin')
print match.group(1)
print match.groups()
输出结果为:
usr
('usr', 'home', 'bin')
5,Python中的列表也是一种序列,它只是所有类似于字符串序列的操作。例如:
L = [123, 'mathboy', 3.14]
print len(L)
print L[0],L[-1],L[1:3],L[:-1],L[:]
print L + [6.28, 'linlin']
L.append('linlin')
print L
L.pop(2)
print L
L.sort()
print L
L.reverse()
print L
输出结果:
3
123 3.14 ['mathboy', 3.14] [123, 'mathboy'] [123, 'mathboy', 3.14]
[123, 'mathboy', 3.14, 6.28, 'linlin']
[123, 'mathboy', 3.14, 'linlin']
[123, 'mathboy', 'linlin']
[123, 'linlin', 'mathboy']
['mathboy', 'linlin', 123]
列表可以嵌套,用以实现一个矩阵或多维数组。同时还是支持强大的列表解析表达式。例如:
M = [[1,2,3],
[4,5,6],
[7,8,9]]
print [row[1] for row in M]
print [row[1]+1 for row in M if row[1]%2 == 0]
print [M[i][i] for i in [0,1,2]]
print [s*2 for s in 'mathboy']
输出结果:
[2, 5, 8]
[3, 9]
[1, 5, 9]
['mm', 'aa', 'tt', 'hh', 'bb', 'oo', 'yy']
6,Python中的字典不是一种序列,而是一种映射,写在花括号{}中,以“键:值”的形式出现。可以通过赋值的方式创建字典。例如:
D1 = {"name": "mathboy", "age":23}
D2 = {}
D2["name"] = "mo"
D2["age"] = 20
字典可以与列表进行相互嵌套。字典有一些方法属性,例如kes()返回键的列表,has_key()判断是否存在某个键
7,元组写在括号()中,类似列表,但具有不可变性,即一旦创建就不能改变。
8,Python通过内置函数set()来创建集合,并支持一般的集合运算。例如:
X = set('mathboy')
Y = set('colinboy')
print X,Y
print X&Y #intersection
print X|Y #union
print X-Y #difference
print Y-X #difference
运行结果为:
set(['a', 'b', 'h', 'm', 'o', 't', 'y']) set(['c', 'b', 'i', 'l', 'o', 'n', 'y'])
set(['y', 'b', 'o'])
set(['a', 'c', 'b', 'i', 'h', 'm', 'l', 'o', 'n', 't', 'y'])
set(['a', 'h', 'm', 't'])
set(['i', 'c', 'l', 'n'])
9,type()函数可以返回变量的类型