不管大家愿意不愿意,现在面试测试多多少少都会出现一些编程题目,下面是小酋收集的一些常见python3面试题,助大家一臂之力。(后面将持续更新)
1、lambda 运用
sum= lambda a,b:a*b print(sum(7,9))
2、统计字符串中每个字母的个数
from collections import Counter a2="sdfjksajkasjdkjdsfkjlksfjkskjhklskjsdkjkfd" res2 = Counter(a2) print(res2)
3、字符串"not 404 found 张三 99 深圳",结果输出“张三 深圳”
import re a3= "not 404 found 张三 99 深圳" list3 = a3.split(" ") res3 = re.findall('d+|[a-zA-Z]+',a3) for s in res3: if(s in list3): list3.remove(s) newstr = " ".join(list3) print(newstr)
4、filter方法求出列表所有奇数并构造新列表,a4 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
方式一:
a4 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] def fn(a): return a%2==1 newlist = filter(fn,a4) newlist = [i for i in newlist] print(newlist)
方式二:
a5 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] newlist5 = [a for a in a5 if a%2==1 ] print(newlist5)
5、对列表排序,按从大到小,a6=[5,11,99,33,89,78]
a6=[5,11,99,33,89,78] a6.sort(reverse=True) print(a6)
6、两个列表[1,5,7,9]和[2,2,6,8]合并为[1, 2, 2, 5, 6, 7, 8, 9]
lista=[1,5,7,9] listb=[2,2,6,8] lista.extend(listb) lista.sort() print(lista)
7、打印当前日期,如2021-03-04
datetimes = datetime.datetime.now() datetimes = datetimes.strftime("%Y-%m-%d") print (datetimes)
8、正则表达式匹配中,(.*)和(.*?)匹配区别?
import re str1 = '<a>呵呵哒</a><a>萌萌哒</a>' str1_1 = re.findall('<a>(.*)</a>',str1) #贪婪匹配 str1_2 = re.findall('<a>(.*?)</a>',str1) #非贪婪匹配 print(str1_1) #打印结果:呵呵哒</a><a>萌萌哒 print(str1_2) #打印结果:呵呵哒 萌萌哒
9、[[1,2],[3,4],[5,6]]一行代码展开该列表,得出[1,2,3,4,5,6]
al1 = [[1,2],[3,4],[5,6]] al1 = [ x for y in al1 for x in y ] print (al1)
10、as="张明 98分",用re.sub,将98替换为100
import re as1="张明 98分" asn = re.sub(r'd+','100',as1) print(asn)
11、返回一个 IP 数组"192.0.0.33?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.3",并且按 IP 最后一位由大到小排序返回
string = "192.0.0.33?!289.0.0.1!0.0.0.0!192.163.10.28?192.0.0.3" string = string.replace('?','',1).replace('?','!',1).split('!') #string.sort(key=lambda x:x[-1],reverse=True) string.sort(key=lambda x:int(x.split('.')[3]),reverse=True) print(string)
12、qstring = "ajldjlajfdljfddd",去重并从小到大排序输出"adfjl"
qstring = "ajldjlajfdljfddd" nstring = set(qstring) qstring = list(nstring) qstring.sort(reverse=False) qstring = "".join(qstring) print(qstring)
13、python中copy和deepcopy区别
①复制不可变数据类型,不管copy还是deepcopy,都是同一个地址当浅复制的值是不可变对象(数值,字符串,元组)时和=“赋值”的情况一样,对象的id值与浅复制原来的值相同。
#复制的值是可变对象(列表和字典)
astr='嗨喽' bstr = astr cstr = copy.copy(astr) dstr = copy.copy(bstr) print(astr,id(astr)) print(astr,id(bstr)) print(astr,id(cstr)) print(astr,id(dstr))
②浅拷贝copy有两种情况:
第一种情况:复制的 对象中无 复杂 子对象,原来值的改变并不会影响浅复制的值,同时浅复制的值改变也并不会影响原来的值。原来值的id值与浅复制原来的值不同。
第二种情况:复制的对象中有 复杂 子对象 (例如列表中的一个子元素是一个列表), 改变原来的值 中的复杂子对象的值 ,会影响浅复制的值。
#深拷贝deepcopy:完全复制独立,包括内层列表和字典
alist=[1,2,[5,6,7]] blist = copy.copy(alist) clist = copy.deepcopy(alist) print(alist,id(alist)) print(blist,id(blist)) print(clist,id(clist))
#第一种情况
alist[1]=20 print(alist,id(alist)) print(blist,id(blist)) print(clist,id(clist))
#第二种情况
alist[2][0]=50 print(alist,id(alist)) print(blist,id(blist)) print(clist,id(clist))
14、使用lambda函数对list排序foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4],输出结果为[0,2,4,8,8,9,-2,-4,-4,-5,-20],正数从小到大,负数从大到小
foo = [-5,8,0,4,9,-4,-20,-2,8,2,-4] foo.sort(key=lambda x:(x<0,abs(x)),reverse=False) print(foo)
15、列表嵌套列表排序,年龄数字相同时,按名字排序
fee = [['张三',27],['李四',24],['王老五',24],['刘麻子',29]] fee.sort(key=lambda x:(x[1],x[0])) print(fee)
16、判断浮点数的运行结果是否相等
aa = 0.1 ab = 0.2 ac = 0.3 assert (aa + ab == ac) #可能丢失精度 assert Decimal(str(aa)) + Decimal(str(ab)) == Decimal(str(ac)) #不会丢失精度
-- End --
文末寄语: 人生的每一次抉择都将带你走向不同的道路,或好或坏无法预料。