Chinaunix首页 | 论坛 | 博客
  • 博客访问: 835793
  • 博文数量: 91
  • 博客积分: 2544
  • 博客等级: 少校
  • 技术积分: 1885
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-12 09:08
文章存档

2016年(10)

2014年(2)

2013年(4)

2012年(23)

2011年(23)

2010年(13)

2009年(14)

2007年(2)

分类: 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 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

 

阅读(1479) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~