python-3_函数_匿名函数_正则_

2023-01-31 02:01:11 python

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__=='__main__'   主动执行会执行,导入不执行

常用模块:
Import sys
Sys.path
Sys.path
Sys.exit

Import os
os.system('uname')
Os.mkdir('myDir')
Os.chdir('~')


相关文章