2010年7月5日星期一

Python学习笔记--List和Dictionary

1. List列表 概述


List是Python中最灵活的有序集合类型。List中的元素可以是任何类型:number, string甚至list。List有一下特点:



  • * List是任意对象的有序集合

  • * 使用下标索引其中的元素

  • * 可变长度,异质(list中元素可以是不同类型),内嵌(list of list)

  • * mutable,序列的操作都适用(index,slice...)

  • * list是引用的集合,而不是对象本身




L = [ ] #空list

L = [1, 2, ‘text’ ] #异质

L = [1, 3, [1, 2] ] #嵌套

L[1], L[1:3], L[i][j], len[L] # index, slice

L1+L2, L * 3 # 链接和复制

for x in L   2 in L

L2.append(4) L2.extend([5,6,7]) L2.sort( ) L2.index(1) L2.reverse( ) # 方法

del L2[k]  del L2[i:j] L2.pop( ) L2[i:j] = [ ] # 删除

L2[i] = 1  L2[i:j] = [4,5,6] # 赋值, mutable

range(4)  range(0, 4) # 产生整数列表

L4 = [x**2 for x in range(5)]  #列表推导式,(现在还不知道是什么意思) 



2. Dictionay字典 概述


如果说列表List是有序对象集合的话,字典就是无序对象集合,他们之间最主要的差别就是,字典通过关键字(key)存取值,而不是offset。


字典有如下特点:





  • * 通过Key读取,而不是offset

  • * 任意对象的无序集合

  • * 可变长度,异质,可任意嵌套

  • * Mutable映射表

  • * 字典是对象引用的hash表,而不是对象本身



可见Dictionary和List基本是一直,除了全面所说的存取方式。


D = {} #空字典,注意是大括号

D1 = {'spam':2, 'egg':'None'} # 字典元素的定义方法

D2 = {'food':{'ham':1,'egg':2}} # 嵌套定义

D1['spam'] D2['food']['ham'] # 存取方法
D1.has_key('egg'), 'egg' in D1, D2.values(), ... # Dictionary相关的方法

D3 = dict(zip(keyslist, valuslist)) #Dictionary的构建(我现在还不清除这种用法)



由于Dictionary不是一个序列,所以不能直接使用迭代,要使用迭代的话,可以如下:
for item in D.keys():


Dictionary使用注意:



  • * Dictionary是Mapping,而不是Sequence,在Dictonary中的各元素没有先后的顺序关系,所以对于Sequence的操作对Dictonary都不使用。如:连接,分片索引(slicing)

  • * 对Dictionary的新的key赋值,就是增加一个新的元素。对已有的key赋值就是修改此元素

  • * Dictionary的key不一定要是字符串string,其实任意不可变(immutable)的对象都可以,例如整数等



没有评论:

发表评论