# 内置数据结构-元组(Tuple)、列表(List)、字典(Dictionary)——2009-12-3
1.元组的正序、倒序、切片的三种索引使用方法:
>>> tuple = ('a','b','c','d','e') #定义一个元组tuple
>>> tuple[2] #索引2的元素(从0开始,从头开始--正序索引)
'c'
>>> tuple[-2] #索引-2的元素(元组中倒数第2的元素,从尾开始--倒序索引)
'd'
>>> tuple[1:3] #切取索引1到索引3中间的元素(切片索引--不包括后者在内)
('b','c') #记住不包括指定索引区间中最后一个索引的元素
>>> tuple[-3,-1] #使用倒序方式指定切取区间,'-'就是从尾数起的意思,不同于从头开始从0,而是1开始
('c','d') #一样是包括指定索引区间中最后一个索引的元素,也就是索引'-1'中的元素
2.元组的另一种有趣的说法--可以"打包"然后"解包":
>>> tuple = (11,22,33,44,55) #定义元组tuple,我们还可以称作我们把11,22,33,44,55这几个常量"打包"起来
>>> a, b, c, d = tuple #新概念"解包",其中a,b,c,d每个都领到了叔叔tuple给他们"封"的红包
>>> print a, b, c, d #哈哈.看看他们各自分得到的红包里的RMB数目对不?....
11 22 33 44 55 #跟叔叔tuple打包时的数目一样.呵呵
3.map()可以返回二元元组的子元组
4.列表的一些常用方法:
①:append(object)--在列表的末尾添加一个对象object
②:insert(index,object)--在索引index处插入一个对象object
③:remove(value)--删除列表中元素为value的值,如果列表中有同名元素,则删除先出现的
④:pop([index])--删除索引为index的元素,如果不值得index,Python则删除列表中最后一个元素
⑤:extend(iterable)--将iterable的元素合并到列表的尾部(还可以用'+='实现)
⑥:index(value,[start,[stop]])--返回列表中元素value的索引,如果列表中有同名元素,则返回先出现的
⑦:sort(cmp=None,Key=None,reverse=False)--列表的排序
⑧:reverse()--列表的反转(反转式排序)
⑨:string in(list)函数可以判断字符串string是否在列表list中
⑩:还可以使用'*'、'+'、'+='进行操作
5.列表中堆栈与队列的概念:
①:堆栈--先进后出,当使用append()方法在列表尾插入一个对象时,此时指针在列表的尾部,也就是堆栈的顶部,而使用pop()方法更是可以把堆栈顶部的元素弹出来
②:队列--先进先出,当使用append()方法在列表尾插入一个对象时,此时指针在列表的尾部,也就是列表的底部,而使用pop(0)-注意多了个索引0,就可以把队列中的第一个元素弹出来
6.字典的灵活运用之一,在print()中使用:
>>> print '%s, %(a)s, %(b)s' %{'a':'apple', 'b':'banana'} #其中的%s显示整个字典,而另外两个%s则指定了字典的键,显示对应的值
{'a':'apple','b':'banana'}, apple, banana
7.字典中的一些杂七杂八:
①:字典的修改--dict[key] = value 如果key未存在则自动添加,如果存在则修改
②:字典的删除--del dict[key] 删除字典中键为key的元素,clear()方法则清空整个字典,也可以用pop(key[,d])弹出键为key的元素,如果字典中没有key这个键值,返回d的内容(可以用做返回提醒信息)
③:字典的遍历--常用for循环就可以搞掂,还可以用items()方法实现:
>>> dict = {'a':'aaa','b':'bbb','c':'ccc}
>>> dict.items()
[('a','aaa'),('b','bbb',('c','ccc')] #items()把字典中的一对键-值作为一个元组返回,然后把字典中所有键值组成的元组再以列表返回
8.字典中的遍历器对象(对象要实例化后才能使用):
①:iteritems()返回key-value形式的遍历器对象
②:iterkeys()返回key形式的遍历器对象
③:itervalues()返回value形式的遍历器对象
需要此类遍历器对象的时候可以按需求选择以提高程序执行效率剩下更多系统资源!
9.字典中的一些方法:
①:keys()--以列表类型返回字典的键
②:values()--以列表类型返回字典的值
③:get(k[,d])--取得字典中k的键值,如果k不存在则返回d
④:update()--合并两个字典(类似于列表中的extend()方法哟~)
⑥:items()--返回由(key,value)元组组成的列表
⑦:setdefault(k[,d])--类似get()方法,不同于get()的是如果k不存在,会使用d作为值创建一个元素并以get()方法的形式返回d,d默认为None
⑧:copy()--复制一个字典中的所有数据--浅拷贝,会跟着引用(这里看以理解成为复制源)的变化而变化,但是deepcopy()-深拷贝(需导入copy模块)则连应数据引用也一起复制)则不会受引用的变化而变化,因为深拷贝是把所有数据和数据的引用也一起拷贝的
copy.copy(dict)--引用copy的copy方法进行拷贝,但似乎dict.copy()也有用...或许这就是python万物皆对象的神奇,也许都共享这copy方法(纯属个人YY说法) 后记:经反复实验.发现这里有点不对呀~
10.关于字典的排序处理函数sorted(需要排序的序列,key = 按什么排序)
11.Python中的全局字典--sys.moudules模块:用于对导入的模块信息进行缓存.
sys.modules.keys()--返回当前环境下加载的模块名称
sys.modules.values()--返回当前下加载的模块的引用信息