Python面试攻略(coding篇)

本文提供了Python面试中常见的编程题目,包括台阶问题/斐波那契数列、去除列表重复元素、合并有序列表、二分查找、快速排序、实现单例模式以及树的遍历等。通过多种解题方法,帮助Python开发者在面试中应对代码问题。
摘要由CSDN通过智能技术生成

 

写在前面

之前为各位小伙伴推出了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 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值