python基础常见面试题第一篇
1.对列表元素去重并保持原先顺序l=[1,2,3,4,1,2,5,7,8,4,6] s=set(l) l1=list(s) l1.sort(key=l.index) print(l1)2.现有两个元组(("a"),("b")),(("c"),("d")),请使用python中匿名函数生成列表[{"a":"c"},{"b":"d"}]t1 = (("a"),("b")) t2 = (("c"),("d")) print(list(zip(t1,t2))) c=lambda t:{t[0]:t[1]} d=map(c,zip(t1,t2)) print (list(d)) d=list(map(lambda z:{z[0],z[1]},zip(t1,t2))) print(d)3.lamda表达式有什么作用,请用lamda表达式和reduce实现1到100的累加不需要定义函数名称(临时函数) 只做简单运算,并返回值,没有复杂的函数体 适合当参数传递用,节省代码行数from functools import reduce a=reduce(lambda x,y:x+y ,[i for i in range(1,101)]) print(a)4.二分法查找的Python示例代码:l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88] def f(l,aim,start,end): mid=int((start+end)/2) if l[mid]>aim: return f(l,aim,0,mid-1) elif l[mid]
5.*args和**kwargs分别代表什么,举例说明**kwargs的用法
#*args:表示的就是将实参中按照位置传值,多出来的值都给args,且以元祖的方式呈现 #**kwargs:表示的就是形参中按照关键字传值把多余的传值都给kwargs以字典的方式呈现 def f(name,age,**kwargs): print(kwargs) f("ctz",21,addr="ynkm",shool="ca") 6 写出下面的结果x="foo" y=2 print(x*y)#foofoo7 写出下面的结果k={"1":1,"2":2} l=k l["1"]=5 print(k["1"]+l["1"])#108 写出下面的结果d={} def add(cou): if cou in d: d[cou]+=1 else: d[cou]=1 add("C") add("J") add("c") print(d) print(len(d)) {"C": 1, "J": 1, "c": 1} 39 写出下面的结果names1=["a","b","c","d"] names2=names1 names3=names1[:] names2[0]="alice" names3[1]="Bob" sum=0 for i in(names1,names2,names3): if i[0]=="alice": sum+=1 if i[1]=="Bob": sum+=10 print(names1) print(names2) print(names3) print(sum) # ["alice", "b", "c", "d"] # ["alice", "b", "c", "d"] # ["a", "Bob", "c", "d"] # 1210 写出下面的结果d=lambda p:p*2 t=lambda t:t*3 x=2 x=d(x) x=t(x) x=d(x) print(x)#24