没准在笔试里可以用的到(持续更新中)

1.计算阶乘

  通常你是这样写: 

def func(n):
	return n<2 and 1 or n*func(n-1)
reduce (lambda x,y:x*y,range(1,n))    #简单多了?高大上了?

  

2.写(读)文件:

f=open(name,'w')
f.write(data)
f.close()

也可以这样:

with open(name,'w') as f:
    f.write(data)    #不用关闭文件!

3.python 的私有:

  想私有方法或者私有变量:方法或变量名前加'__': def __myfunc()    __color = ''

  "单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;
  "双下划线" 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。

4.遍历目录:

import os.path
def Vist(arg,dirname,names):
    for filepath in names:
      print os.path.join(dirname,filepath)
 
path ='xxxx' 目录路径
os.path.walk(path,Vist,())  #Vist 回调函数  先遍历顶级目录,在遍历目录中文件

5.1,2,3,4,5的全排列

from itertools import permutations 

p = list(permutations('12345'))

当然也可以用递归,或者好多好多个for

递归:

def perms(elements):
    if len(elements) <=1:
        yield elements
    else:
        for perm in perms(elements[1:]):
            for i in range(len(elements)):
                yield perm[:i] + elements[0:1] + perm[i:]
for item in list(perms([1,2,3,4,5])):
    print item

6.获取上一级目录

import os,os.path
path = os.getcwd()
parent_path = os.path.dirname(path)

print path
print parent_path

7.combinations(iterable, r),创建一个迭代器,返回iterable中所有长度为r的子序列(不重复)

from itertools import *
for i in combinations([1, 2,3,4], 2):
    print i

8.功能同上,重复

from itertools import *
for i in combinations_with_replacement([1, 2, 3,4], 2):
    print i

9.删除列表中相同的字典

from itertools import *
l = [{'name':'zhang', 'age':18}, {'name':'zhang', 'age':18}, {'name':'li', 'age':18}]
for d1, d2 in combinations(l, 2):
    a = list(set(d1.items())^set(d2.items()))
    if len(a) == 0:
        i = l.index(d1)
        l.pop(i)

print l

10.同时遍历两个数组(字典),[过去写爬虫(beautifulSoup)的时候遇到过,同时遍历两类元素的]

b = [1,2,3]
a = [4,5,6,7]
for i, j in zip(a, b):
	print i, j

11.当你有两个列表,其中一个为空,如果想使用其中一个不空列表的时候

b = [1,2,3]
a = []
for i in set(a) | set(b):
	print i

12.直接插入到列表某位置:

a=[1,2,3]
a.insert(3,1111)
print a

  

 

 

  

 

  

posted @ 2014-07-24 20:32  huangxiaohen  阅读(464)  评论(2编辑  收藏  举报