# -*- coding: UTF-8 -*- 或者 #coding=utf-8
列表:
#coding=utf-8
#列表的创建及删除操作
list = ["apple","banana","grape","orange"] print list print list[2] list.append("watermelon") list.insert(1,"grapefruit") print list list.remove("grape") print list print list.pop() print list
#如果元组中有两个相同的元素,则删除对应元素时删除的是第一个出现的元素
#负索引,分片,遍历二元组
list = ["apple","banana","grape","orange"] print list[-2] print list[1:3] #从第2个元素到第3个元素 print list[-3:-1] list = [["apple","banana"],["grape","orange"],["watermelon"],["grapefruit"]] for i in range(len(list)): print "list[%d]:"% i , "" , for j in range(len(list[i])): print list[i][j]
#列表的连接功能
list = ["apple","banana","grape","orange"] print list[-2] print list[1:3] #从第2个元素到第3个元素 print list[-3:-1] list = [["apple","banana"],["grape","orange"],["watermelon"],["grapefruit"]] for i in range(len(list)): print "list[%d]:"% i , "" , for j in range(len(list[i])): print list[i][j]
#列表的查找,排序与反转
list_4 = ["apple","banana","orange","grape"] print list_4.index("grape") #返回元素在列表的位置 print list_4.index("orange") print "orange" in list_4 list_4.sort() print "Sort list_4:",list_4 list_4.reverse() print "Reversed list_4:",list_4 list_4.append("juice") print list_4 list_4.index(1,list_1) print list_4 list_4.remove("lemon") print list_4 list_4.extend("hello") print list_4
元组:
#coding=utf-8
#元组的创建
tuple_name = ('apple','banana','orange') print tuple_name[1]
#如果只有一个元素需要加逗号,否则无法区分是元组还是表达式
tuple_name_1 = ('apple') print tuple_name_1[0] tuple_name_2 = ('apple',) print tuple_name_2[0]
#元组不能添加或者删除任何元素,所以元组不存在任何添加删除元素的方法
#负数索引元组
tuple_name_3 = ('apple','banana','orange') print tuple_name_3[-1] print tuple_name_3[-2] print tuple_name_3[-3]
#分片截取后得到的是一个元组
print tuple_name_3[1:3] print tuple_name_3[0:-2] print tuple_name_3[2:-2]
#元组的创建可以称为打包过程,相反解包是元组中的值分给各个变量
tuple_name_4 = ('apple','banana','orange') q,w,e = tuple_name_4 print q,w,e
#二元元组的遍历
tuple_name_5 = (('apple','banana'),('orange',),('waterlelon',),('grapefruit',)) for i in range(len(tuple_name_5)): print "tuple_name_5[%d]:"% i ,'', for j in range(len(tuple_name_5[1])): print tuple_name_5[i][j]
#map()实现元组的遍历
tuple_name_6 = (('apple','banana'),('orange',),('waterlelon',),('grapefruit',)) k = 0 for t in map(None,tuple_name_6): print "tuple_name_6[%d]:" % k ,"", for x in t : print x,"", print k+=1
字典:
#coding=utf-8
#字典的创建和掩饰
dict = {"a":"apple","b":"banana","g":"grape","o":"orange"} print dict print dict["a"]
#字典的访问
dict["w"] = "watermelon" del(dict["a"]) dict["g"] = "grapefruit" print dict.pop("b") print dict dict.clear() print dict
#实现字典的遍历
dict = {"a":"apple","b":"banana","g":"grape","o":"orange"} for (k,v) in dict.items(): print "dict[ %s ] =" % k,v print dict.keys() print dict.values()
#字典中元素获得方法
print dict.get("c","apple") print dict.get("e","apple")
#字典中更新方法
dict_1 = {"s":"silei"} print dict_1 dict.update(dict_1) print dict
#字典不是序列,所以更新后的字典是没有顺序的
#字典设置默认初始值
dict = {}
dict.setdefault("a") print dict dict["a"] = "apple" dict.setdefault("a","default") print dict
#字典的排序
dict = {"a":"apple","b":"banana","g":"grape","o":"orange"} print dict
#按照key排序 print sorted(dict.items(),key=lambda d:d[0]) #按照value排序 print sorted(dict.items(),key=lambda d:d[0])
#字典的复制
#浅拷贝
dict_3 ={"a":"apple","b":"banana"} dict_4 ={"c":"orange","d":"grap"} dict_3 = dict_4.copy() print dict_3
#深拷贝
import copy dict ={"a":"apple","b":{"g":"grape","o":"orange"}} dict2 = copy.deepcopy(dict) dict3 = copy.copy(dict)#copy().copy()等于dict.copy() dict2["b"]["g"] = "orange" print dict dict3["b"]["g"] = "orange" print dict
#全局字典
#sys.modules是一个全局字典,该字典是Python启动后就加载在内存中的,每当加载新的模块的时候,都将记录这个模块,
# 这个字典就起到了缓存的作用。每当第一次加载这个模块的时候字典将自动记录这个模块,当第2次引入时,Python会在
# 字典中查找,从而加快了程序的运行速度
import sys print sys.modules.keys() print sys.modules.values() print sys.modules["os"]
模板:
字符串模板已经作为PEP 292的一部分增加到Python 2.4中。
Example:
import string a = { 'goods' : 'apple' } b = string.Template(""" Fruit :$goods Things :${goods} is a Fruit Escape :$$ """) print 'TEMPLATE:',b.substitute(a) c = """ Fruit :%(goods) Things :%(goods) is a Fruit Escape :%% """ print 'INTERPOLATION',c % a
模板不需要考虑参数类型,数值会转换为字符串,再将字符串转换到结果中。
safe_substitute()可以避免未能提供模板所需要参数值时可能产生的异常。
Example:
import string a = {'goods':'apple'} b = string.Template("$goods") try: print 'substitute() :',b.substitute(a) except KeyError, err: print 'Error:',str(err) print 'safe_substitute():',b.safe_substitute(a) 高级模板: import string template_text = ''' Delimiter : %% Replaced : %with_underscore Ignored : %notunderscored ''' d = { 'with_underscore' : 'replace', 'notunderscored' : 'not replace,' } class MyTemplate(string.Template): delimiter = '%' idpattern = '[a-z]+_[a-z]+' t = MyTemplate(template_text) print 'Modified ID pattern:' print t.safe_substitute(d)
这里重写MyTemplate
String中的源代码如下所示
但是被修改为
class MyTemplate(string.Template):
delimiter = '%'
idpattern = '[a-z]+_[a-z]+'
使得定界符修改为%,变量名必须带有下划线才会被替换
更复杂的替换