L=['a','b','c','d']
for (offset,item) in enumerate(L):
print offset,item
打印的结果:
0 a
1 b
2 c
4 d
迭代器:
for i in range(100): 生成列表
for i in xrange(100) 迭代器,速度会比range快
readlines() xreadlines()
a=iter(list) 生成迭代器
a.next()
节省内存:只记录迭代的开头和结尾,当前位置。
和函数一起使用,可以使函数中断并保存函数的中断状态,yield,可以减少程序的阻塞
例子:
def run():
print "test1"
yield 1 #变成迭代器,程序运行到这里会停止跳到外面的执行。yield相当于返回值。
time.sleep(1)
print "test2"
time.sleep(1)
print "test2"
time.sleep(1)
print "test2"
time.sleep(1)
task=run()
task.next()
print '--do sth else---'
task.next() #如果不加本行,就不会执行yield后面的。
函数:
函数中可以直接修改全局的列表 字典等复杂的数据类型。
lambda函数(匿名函数):
def f(x):
return x**2
g = lambda x:x**2 匿名函数的写法
print map(f,range(10)) 把列表输入函数运算,再返回结果
print map(lambda x:x**2,range(10))
sorted()用法:例子是对字典key进行
排序(虽然字典是无序的)
dic1={3:2,4:3,6:9,'a':'test','e':'fff','*':'$'}
print sorted(dic1.items(),key=lambda x:x[0])
rgs kargs
内置函数:
a=range(10)
a=iter(a) #把列表变成了迭代器
a.next()
print [i for i in a if a<5]
filter(lambda x:x*x,a) 选出符合的元素
a=[1,2,3,4] b=[5,6,7,8,9,10]
zip(a,b)
[(1,5),(2,6),(3,7),(4,8)]
map(None,a,b)
[(1,5),(2,6),(3,7),(4,8),(none,9),(none,10)]
reduce(lambda x,y:x+y,a)
序列化:
硬盘上只能存
字符串或者二进制,因此不能存字典,列表等。
pickle 只是
python中使用的序列化类型。
pickle.dump(对象,文件句柄) pickle.load() pickle.dump(dic1,f)
JSON.dump()
json.load()
正则表达式:
m = re.match("\d",匹配的对象) match是从开头匹配。
查看匹配到字符: m.group()
re.search()全局查找匹配
re.findall() 查找所有匹配到的
re.split() 按照符号分割
re.sub('\d',"|",字符对象) 把梳子全部替换成|
re.sub('\d',"|",字符对象,count=2) 只替换前两个
模块的创建和导入:
if __name__=='__m
ain__' 主动执行会执行,导入不执行
常用模块:
Import sys
Sys.path
Sys.path
Sys.exit
Import os
os.system('uname')
Os.mkdir('myDir')
Os.chdir('~')
0