一、冒泡排序
第二种冒泡排序:
li = [89,22,63,11,43,2,47,21,1,97,73]
for a in range(len(li)-1):
for b in range(a+1,len(li)):
if li[a] > li[b]:
li[a],li[b]=li[b],li[a]
print li
列出来两个序列,a是从第一个到倒数第二个,b是从第二个到倒数第一个,然后两个序列的列表值做比较,大的换位置。
二、更改配置文件
1、查询配置,原有文件中有此节点,将此节下的记录列出来
def look_setup(site):
with open('G:\doc\setup.conf') as f:
li=[]
flag=False
for line in f:
lookline='backend %s' % site
if line.strip() == lookline:
flag=True
continue
if line.strip().startswith('backend'):
break
if flag and line.strip():
li.append(line.strip())
return li
此函数用来查询,调用此函数:
retu=look_setup('www.oldboy.org')
print retu
2、增加一行记录。
先判断节点backend是否存在,如果存在,再判断新节点是否已经存在,如果存在就不再添加,如果不存在则要添加;如果backend不存在,则把backend和记录同时添加到文件末尾。
3、删除一行记录或backend节点
先判断记录是否存在,如果存在就删除;判断backend节点是否存在,存在则删除。
三、lambda表达式
lambda表达式可以将简易的函数用一行来表示,如:
def func(name):
return name * 2
下面一句,等同于上面两句,可以直接调用func2函数。
func2=lambda name:name *2
func2=lambda **x:x
a={'wang':24,'zhi':42}
print func2(**a)
lambda用来处理简单逻辑,自动return.
四、内置函数之序列操作系列
1、map 对序列中的每个元素进行操作,最终返回一个新的序列
>>> a=(14,35,63)
>>> print map(lambda x:x+50,a)
[64, 85, 113]
##a是列表或元组,遍历a传给前面的lambda的匿名函数,这两个做为map的两个参数。
li=[23,89,1,1]
li2=[11,42,53,35]
print map(lambda a,b:a+b,li,li2)
li和li2两个列表元素的数量要相等,否则会报错。
2、filter 对序列中的元素进行筛选 ,返回符合条件的序列。
filter()函数为过滤生成新列表,当在第一个功能函数内返回True时候,才把元素放到新列表中,否则过滤掉
li=[15,22,66,43]
def test(num):
if num>40:
return True
else:
return False
print filter(test,li)
##filter(function, sequence) 返回一个 sequence(序列),包括了给定序列中所有调用 function(item) 后返回值为 true 的元素(如果可能的话,会返回相同的类型)。如果该 序列 (sequence)是一个 str, unicode 或者 tuple,返回值必定是同一类型,否则,它总是 list。
li=[23,89,False,'',0]
print filter(None,li)
如果filter的参数为None, 则只取序列中为True的数值。
3、reduce 对序列进行累计操作,最后返回一个值。
li=[11,42,53,35]
print reduce(lambda a,b:a+b,li)
五、yield生成器
def abc():
yield 2
yield 4
yield 7
>>> abc()
<generator object abc at 0x7f7f873a5640>
yield只有在循环调用时候,才会生效,执行时yield能记录上次循环执行的位置,下次循环直接从下一步开始:
def func(b):
a=0
while True:
a+=1
if a>b:
return
else:
yield a
此函数也只有在for循环调用时才会打印。
六、装饰器
在不用装饰器的情况下,如果想给home函数增加功能,又不想改原home的代码
def home():
print "Welcome to back"
可用以下方法:
def inclues(fun):
print "This is append"
return fun()
home=inclues(home)
以上方法虽然没有home的原代码,但是改变了接口的调用方式。
def inclues(fun):
print "This is append"
return fun
home=inclues(home)
home()
上面的方法就是在不改变源代码 ,又不改变调用接口的情况下实现了添加新功能的需求。
这就是装饰器的分解,
装饰器方法如下:
def inclues(fun):
print "This is append"
return fun
@inclues
def home():
print "Welcome to back"
home()
装饰器要放在函数的上面,函数才可以调用。
转载于:https://blog.51cto.com/tianbright/1715572