分类: LINUX
2012-02-23 06:39:10
python 基础要点
1, 列表
1.1 列表特性
*和其他语言不同,在内存中的位置和引用关系如下。所以可以通过负数来访问列表成员。
其中的N == 序列的长度 == len(sequence)
*列表中的元素可以是不同类型的, 例如:[2, 'abc', [2,3,4]]
*列表中的某一个元素可以通过下标的偏移量得到,多个元素可以通过切片操作得到。
*列表中的成员可以增加,减少,反转等操作。
1.2 列表操作
*创建列表
s=[] #创建一个空列表
s=[1,2,"abc",[e,f,g]] #创建一个不同类型元素的列表
s=list('abc') #创建列表: b=[a,b,c]
*访问列表
seq[ind] 获得下标为ind 的元素(下标由0开始计数,和C语言一样)
seq[ind1:ind2] 获得下标从ind1(包括在内)到ind2(不包括在内)间的元素集合
seq[ind1:ind2:step] 按步长step获取从ind1到ind2的多个元素,例如seq[::-1]可以反转序列seq
*更新列表
seq * expr 序列重复expr 次
seq1+seq2 连接序列seq1 和seq2
*“ ”不能使得原来的列表扩展,而是新建了一个列表对象,如要扩展原来的列表可用extend()
*删除列表
s=[a,b,c]
del s[1] #删除位置1的元素,s=[a,c]
s.remove(b) #删除值b的元素,s=[a,c]
del s #删除整个列表
注:一般不用手动删除序列,会自动回收
*关系操作符
obj in seq 判断obj 元素是否包含在seq 中
obj not in seq 判断obj 元素是否不包含在seq 中
*列表解析
a = [i*2 for i in [8,-2,5]] #a=[16,-r,10]
*列表的序列类型函数
len() #列表元素个数
cmp() #比较列表中的元素值的大小
max()和min() #返回列表元素的最大值或最小值
sorted() 和 reversed() #注意排序是使用的ASCII码进行的
sum() #求列表元素之和
2,字符串
*在python中,字符串的单引号和双引号作用是一样的,这和其他语言不同。
*字符串是不可变类型,也就是说改变一个字符串的元素需要新建一个新的字符串。
*字符串的操作
(1)赋值操作
a = "abcd"
a = str(range(3)) #[0,1,2]
(2) 访问字符串
和访问列表的操作相似
a="abcd"
print a[:3] #abc
(3)修改字符串
a = "abcd"
b = a[:2] "efg" #abefg
(4) 删除字符串
a = "abcd" ; a=""
del a
注:字符串的删除操作不用手动做,系统会自动进行垃圾回收
*字符串操作符
(1)比较操作
a, b = "abc", "efg"
a < b # True
a == b # False 比较字符串时是按照ASII码进行比较的
(2) 切片操作
a[1:3] #和列表操作一样
a[-3:-1]
(3) 成员操作
用来判断一个字符或者一个子串是否出现在另一个字符串中。
"nm" is "abcnml" #True
"a" is not "cdef" #True
(4) 连接操作
a, b = "abc", "efg"
c = a b #c变成"abcefg"
这种连接方法效率比较低下,可以使用以下方法更好
法1: c = '%s%s' % (a,b) #c="abcefg"
法2: d = ''.join((a,b)) #d="abcefg"
(5) 把普通字符串转换成unicode字符串
若把一个普通字符串和一个unicode字符串连接,python会先把普通字符串转换成unicode字符串。
'hello' u'' ' world' # u'hello world'
(6) 重复操作(*)
a = 'Ni!' * 3 #a='Ni!Ni!Ni!'
(7) 字符串操作函数
(7.1) str.split([sep,[max]])
#注意
若该函数没有添加参数时,会按照\t或\n或\v或\r或\f或' '来进行分割。即使有多个\t连在一起,也会一起当成分隔符。
例如:s = "a b c d"
s.split() #结果是 ['a','b','c','d']
#sep指定了多个字符,会把这些字符当成一个整体作为分隔符进行分割。
s.split(' ') #结果是:['a','b\tc','c','\td']
3,元组
(1)元组的特性
*元组中的元素是不可改变的
(2)元组的操作
t = () #创建一个空元组
t = (1, 2, "abc") #创建一个有3个元素的元组
t = (1,) #创建一个只有一个元素的元组
(3)访问元组
和序列的访问操作一样,都支持切片操作如:t[1],t[1:3],t[:3]
(4)更新一个元组
元组是不能改变的,要更新一个元组,就只有新建一个元组。
t = t1 + t2
t = t1 * 2
t = t + (1,2)
(5)删除一个元组
del t
(6) 元组操作符
<
is 或 is not
4, 字典
(1) 字典的特性
*字典是Python中唯一的映射类型。映射类型可以使用字符串作为键,而序列只能使用数字。
*字典的值没有任何的限制,可以是python的任意对象。
*字典的键字是由限制的:
.一个键值不能对应多个值
.键值必须是可以哈希的,也就是说键值必须是不可变类型的值
(2) 创建字典
d = {} #创建一个空字典
d2 = {'name': 'tom', 'age': 80} #创建一个有两个元素的字典
d3 = dict((['x',1], ['y',2])) #['y':2, 'x':1] #用工厂方法dict创建字典
d4 = {1:'tom1', 2:'tom2', 'allname':'tome'} #可用不同类型的键字
(3) 访问字典中的值
# 遍历字典
#从python 2.2开始可以使用 for key in d2:
for key in d2.keys():
print 'key=%s, value=%s' % (key, d2[key]) #遍历字典
# 访问某个值
print d2['name'] # tom
print '%(name)s is %(age)d '%d2 #直接利用print打印字典的值
#检查是否有键字存在
if 'name' in d2:
print d2['name']
(4) 修改字典
d2['name']='tom1' #ass
也可以使用Update()函数把整个字典的内容添加到另一个字典中
(5) 删除字典元素
del d2 #删除整个字典
del d2['name'] #删除字典中的name的值
d2.clear() #清楚d2中的所有条目
d2.pop('name') #删除并返回键字为name的条目
(6) 字典的内建函数
.在python下可以使用help(dict)来查看
.复制字典 d3=d2.copy()
.字典长度:键-值对的个数 len(d2)
(7) 字典的比较操作
比较算法: 1,比较长度 2,比较字典的键字 3,比较字典的值 4,若都相同返回0