写在前面
之前为各位小伙伴推出了python面试(嗨谈篇)的内容,主要为各位小伙伴介绍了一些关于python面试中经常出现的概念性问题,那么今天就要从代码入手了,让各位Pythoner在面试的时候遇到这些代码问题也能完全不慌乱,从容解决。
当然,如果你在面试的过程中,正巧遇到了这其中没提及的问题,你认为比较有意思的,也可以在后面的留言板中分享出来让别的小伙伴参考一下看看~
1.台阶问题/斐波那契
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少中跳法:
fib = lambda n: n if n <= 2 else fib(n - 1) + fib(n - 2)
第二种方法:
def memo(func):
cache = {}
def wrap(*args):
if args not in cache:
cache[args] = func(*args)
return cache[args]
return wrap
@memo
def fib(i):
if i < 2:
return 1
return fib(i-1) + fib(i-2)
第三种方法:
def fib(n):
a, b = 0, 1
for _ in range(n):
a, b = b, a + b
return b
2.去除列表中的重复元素
用集合
list(set(l))
用字典
l1 = ['b','c','d','b','c','a','a']
l2 = {}.fromkeys(l1).keys()
print (l2)
列表推导式
l1 = ['b','c','d','b','c','a','a']
l2 = []
[l2.append(i) for i in l1 if