Python面试题常用函数总结_python机试常用,算法面试经典100题及答案

#例1:
>>> a="I love China"
>>> a.split()   # 分隔符为空,分割次数默认
['I', 'love', 'China']

#例2:
>>> b="I love China, and you, you"
>>> b.split(", ")    # 使用逗号和空格作为分隔符
['I love China', 'and you', 'you']
 
#例3:
>>> c="I#love#China#andyou#you"
>>> c.split("#")   #使用#作为分隔符
['I', 'love', 'China', 'andyou', 'you']

#例4:
>>> d="I#love#China#andyou#you"
>>> d.split("#",1)   # 将 max值为 1,将返回包含 2 个元素的列表
['I', 'love#China#andyou#you']
 
#例5:
>>> e="with great power comes great responsibility. I love China and you you"
>>> e.split(" ",15) #空格为分隔符
['with', 'great', 'power', 'comes', 'great', 'responsibility.', 'I', 'love', 'China', 'and', 'you', 'you'] 

5. 巧用 [::-1] python字符串切片方法

[::-1] 是一个逆序操作,核心是切片。设有列表/字符a,则切片的语法为 b = a[start_index: end_index: step]

s1 = s[: : -1] 其实就是s1 = s[-1: : -1]

>>> s='the sky is blue'
>>> print(list(s)[::-1])
['e', 'u', 'l', 'b', ' ', 's', 'i', ' ', 'y', 'k', 's', ' ', 'e', 'h', 't']
>>> print(s.split()[::-1])
['blue', 'is', 'sky', 'the']
>>> print(s[::-1])
eulb si yks eht
>>> a=['h','e','ll','o']
>>> print(a[::-1])
['o', 'll', 'e', 'h']
6. Counter()函数

Counter() 是 collections 库中的一个函数,可以用来统计一个 python 列表、字符串、元组等可迭代对象中每个元素出现的次数,即统计词频 并返回一个字典

from collections import Counter
 
nums = [1, 1, 1, 6, 6, 6, 7, 8]
count = Counter(nums)  # 统计词频
for k, v in count.items():
    print(k, v)
print(count)
"""
输出:
1 3
6 3
7 1
8 1
Counter({1: 3, 6: 3, 7: 1, 8: 1})
"""

使用 Counter统计完词频后可以使用 most_common方法来查找出现频率最高的 k 个数字及其出现次数。

from collections import Counter
 
nums = [1, 1, 1, 6, 6, 6, 7, 8]
 
count = Counter(nums)
 
ansdict = count.most_common(2)  # 返回出现次数最多的两个数及其出现的次数
print(ansdict) # 注意输出格式
ans = []
for i in range(len(ansdict)):
    ans.append(ansdict[i][0])  # 提取出出现次数最多的两个数
print(ans)
 
"""
输出:
[(1, 3), (6, 3)]
[1, 6]
"""
7. 字典(Dictionary)的 get() 方法

get() 函数返回指定键的值。

dict.get(key[, value]) 
  • key – 字典中要查找的键。
  • value – 可选,如果指定键的值不存在时,返回该默认值。
  • 返回指定键的值,如果键不在字典中返回默认值 None 或者设置的默认值。
tinydict = {'Name': 'Runoob', 'Age': 27}

print ("Age : %s" %  tinydict.get('Age'))

# 没有设置 Sex,也没有设置默认的值,输出 None
print ("Sex : %s" %  tinydict.get('Sex'))  

# 没有设置 Salary,输出默认的值  0.0
print ('Salary: %s' % tinydict.get('Salary', 0.0))

# 输出
Age : 27
Sex : None
Salary: 0.0
8. stack 栈 方法:stack.pop()出栈,stack.append()入栈,stack[-1] 表示栈中的最后一个元素
9. zip() 和 zip(*) 函数常用于矩阵转置(行变成列)

(1)传入一个参数时:

zip(iteration): 它的参数为多个可迭代对象,作用是聚合每个可迭代对象中的元素。
从iteration中依次取一个元组,组成一个元组。

(2)传入两个参数时 zip(a,b):

zip()函数分别从a和b依次各取出一个元素组成元组,再将依次组成的元组组合成一个新的迭代器–新的zip类型数据。

其中,

  • 要求a与b的维数相同,当两者具有相同的行数与列数时,正常组合对应位置元素即可;
  • 当a与b的行数或列数不同时,取两者结构中最小的行数和列数,依照最小的行数和列数将对应位置的元素进行组合;这时相当于调用itertools.zip_longest(*iterables)函数。
>>> grid = [[3,0,8,4],[2,4,5,7],[9,2,6,3],[0,3,1,0]]
>>> list(zip(*grid))
[(3, 2, 9, 0), (0, 4, 2, 3), (8, 5, 6, 1), (4, 7, 3, 0)]
>>> list(zip(grid))
[([3, 0, 8, 4],), ([2, 4, 5, 7],), ([9, 2, 6, 3],), ([0, 3, 1, 0],)]

10. tuple() 函数

tuple()函数用于将列表、区间(range)等转换为元组。

注意:元组和列表非常类似,但列表与元组最大的区别在于:元组是不可改变的,列表是可改变的。元组支持的操作,列表基本上都支持;列表支持对元素的修改,而元组则不支持。从这个角度来看,可以认为列表是增强版的元组。

虽然大部分时候都可使用列表来代替元组,但如果程序不需要修改列表所包含的元素,那么使用元组代替列表会更安全。

用法:tuple(list/range…),返回元组。

a = [1,2] #list
b = {"1":2,"3":3} #dict
c = {1,2,3,3}  #set
d = range(2,10,2) #range
print(tuple(a))
print(tuple(b))
print(tuple(c))
print(tuple(d))

#输出
(1, 2)
('1', '3')
(1, 2, 3)
(2, 4, 6, 8)
11. collections.deque() python自带的库函数

collections是python自带的库collections.deque()是双端队列,可以实现左右两端添加或取出元素的功能,时间复杂度均为O(1),同时具有栈和队列的性质。

append():从右端添加元素,与list相同。

appendleft():从左端添加元素

extend():从右端逐个添加可迭代对象,与list相同,Python中的可迭代对象有:列表、元组、字典、字符串。

extendleft():从左端逐个添加可迭代对象,Python中的可迭代对象有:列表、元组、字典、字符串。

pop():移除列表中的一个元素(默认最右端的一个元素),并且返回该元素的值(与list同),如果没有元素,将会报出IndexError。

popleft():移除列表中的一个元素(默认最左端的一个元素),并且返回该元素的值,如果没有元素,将会报出IndexError。

count():统计队列中的元素个数(与list同)。

insert(index,obj):在指定位置插入元素(与list同)。

rotate(n): 从右侧反转n步,如果n为负数,则从左侧反转。如:d.rotate(1) 等于 d.appendleft(d.pop())

maxlen:只读的属性,deque限定的最大长度,如果无,就返回None。当限制长度的deque增加超过限制数的项时,另一边的项会自动删除。

remove():移除第一次出现的元素,如果没有找到,报出ValueError。

clear():将deque中的元素全部删除,最后长度为0。

q = collections.deque()
q.append('a') # 在队列右边添加元素‘a’,deque(['a'])
q.appendleft('b') # 在队列左边添加元素‘b’,deque(['b', 'a'])
q.extend('c') # 在队列右边添加序列,deque(['b', 'a', 'c])
q.extendleft('d') # 在队列左边添加序列,deque(['d', 'b', 'a', 'c'])
# 关于append和extend的区别
# append添加一整个对象,不管该对象是什么类型,都作为一个整体全部添加进来,如整型数据或者一整个列表
# extend添加一个序列,只能是相同类型的元素,如该题中的字符/字符串或者是由字符和字符串组成的列表['st','e'],其他类型的数据如整数就会报错
q.append(['e','f'] # deque(['d', 'b', 'a', 'c', ['e', 'f']])
q.append(4) # deque(['d', 'b', 'a', 'c', ['e', 'f'], 4])
q.extend([g', 'h'] # deque(['d', 'b', 'a', 'c', ['e', 'f'], 4, 'g', 'h'])
q.append(5) # 报错 TypeError: 'int' object is not iterable
# 取出元素
q.pop() # 右端取出
q.popleft() # 左端取出

12. enumerate() 函数

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标。

也就是说,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。一般用在 for 循环当中。

语法:enumerate(sequence[,startindex=0])

参数:
  • sequence – 一个序列、迭代器或其他支持迭代对象。
  • start – 下标起始位置。
season=['spring','summer','fall','winter']
print(enumerate(season))
# 输出 <enumerate object at 0x000002CE4C2EC870>
print(list(enumerate(season)))
# 输出 [(0, 'spring'), (1, 'summer'), (2, 'fall'), (3, 'winter')]
for i in enumerate(season):
    print(i)
# 输出 (0, 'spring')
#      (1, 'summer')
#      (2, 'fall')
#      (3, 'winter')
for i,element in enumerate(season):
    print(i,season[i])
    print(i)
#输出 0 spring
#     0
#     1 summer
#     1
#     2 fall
#     2
#     3 winter
#     3

abc='abcdefg'
print(enumerate(abc))
print(list(enumerate(abc)))
for i in enumerate(abc):
    print(i)
for i,element in enumerate(abc):
    print(i,abc[i])

输出:

<enumerate object at 0x000001B75A712828>
[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e'), (5, 'f'), (6, 'g')]
(0, 'a')
(1, 'b')


**自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**
![img](https://img-blog.csdnimg.cn/img_convert/50f9bd0784e477b4f047ef76c169ed18.png)
![img](https://img-blog.csdnimg.cn/img_convert/2a97f89cd744adf11a64966ffd1aa79a.png)
![](https://img-blog.csdnimg.cn/img_convert/46506ae54be168b93cf63939786134ca.png)
![](https://img-blog.csdnimg.cn/img_convert/252731a671c1fb70aad5355a2c5eeff0.png)
![](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png) 
![](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Python开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注Python)**
![img](https://img-blog.csdnimg.cn/img_convert/2a8f60066119a62f04331b2938d740e7.png)



### 最后

Python崛起并且风靡,因为优点多、应用领域广、被大牛们认可。学习 Python 门槛很低,但它的晋级路线很多,通过它你能进入机器学习、数据挖掘、大数据,CS等更加高级的领域。Python可以做网络应用,可以做科学计算,数据分析,可以做网络爬虫,可以做机器学习、自然语言处理、可以写游戏、可以做桌面应用…Python可以做的很多,你需要学好基础,再选择明确的方向。这里给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

#### 👉Python所有方向的学习路线👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

![](https://img-blog.csdnimg.cn/img_convert/604bae65027d4d67fb62410deb210454.png)

#### 👉Python必备开发工具👈

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

![](https://img-blog.csdnimg.cn/img_convert/fa276175617e0048f79437bd30465479.png)



#### 👉Python全套学习视频👈

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

![](https://img-blog.csdnimg.cn/img_convert/16ac689cb023166b2ffa9c677ac40fc0.png)



#### 👉实战案例👈



学python就与学数学一样,是不能只看书不做题的,直接看步骤和答案会让人误以为自己全都掌握了,但是碰到生题的时候还是会一筹莫展。



因此在学习python的过程中一定要记得多动手写代码,教程只需要看一两遍即可。

![](https://img-blog.csdnimg.cn/img_convert/0d8c31c50236a205928a1d8ae8a0b883.png)



#### 👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

![](https://img-blog.csdnimg.cn/img_convert/99461e47e58e503d2bc1dc6f4668534a.png)




**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
![img](https://img-blog.csdnimg.cn/img_convert/c0e73c1fc0e624aa85ad9e87ef9aec46.png)

。

![](https://img-blog.csdnimg.cn/img_convert/0d8c31c50236a205928a1d8ae8a0b883.png)



#### 👉大厂面试真题👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

![](https://img-blog.csdnimg.cn/img_convert/99461e47e58e503d2bc1dc6f4668534a.png)




**一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**
[外链图片转存中...(img-scLTcFB3-1712925477974)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值