python經典面試 python經典面試題

2021-10-11 20:30:23 字數 3850 閱讀 4909

基礎部分

1.將列表按照下列規則排序,補全**

1.整數在前,負數在後2.正數從小到大3.負數從大到小

lst= [7,-8,5,4,0,-2,-5]

補全**:

sorted(lst, key=lambda x:____)

答案:lst = [7,-8,5,4,0,-2,-5]

lst= sorted(lst, key=lambda x:(int(x<0), abs(x)))print(lst)

view code

解析:sorted語法:

sorted(iterable[, cmp[, key[, reverse]]])

引數說明:

iterable--可迭代物件。

cmp-- 比較的函式,這個具有兩個引數,引數的值都是從可迭代物件中取出,此函式必須遵守的規則為,大於則返回1,小於則返回-1,等於則返回0。

key--主要是用來進行比較的元素,只有乙個引數,具體的函式的引數就是取自於可迭代物件中,指定可迭代物件中的乙個元素來進行排序。

reverse-- 排序規則,reverse = true 降序 , reverse =false 公升序(預設)。

lambda表示式語法:

python 使用lambda來建立匿名函式。

lambda只是乙個表示式,函式體比def簡單很多。

lambda的主體是乙個表示式,而不是乙個**塊。僅僅能在lambda表示式中封裝有限的邏輯進去。

lambda函式擁有自己的命名空間,且不能訪問自有引數列表之外或全域性命名空間裡的引數。

雖然lambda函式看起來只能寫一行,卻不等同於c或c++的內聯函式,後者的目的是呼叫小函式時不占用棧記憶體從而增加執行效率。

語法lambda函式的語法只包含乙個語句,如下:lambda[arg1 [,arg2,.....argn]]:expression

如下例項:#可寫函式說明

sum = lambda arg1, arg2: arg1 +arg2;#呼叫sum函式

print "相加後的值為 :", sum( 10, 20)print "相加後的值為 :", sum( 20, 20)

以上例項輸出結果:

相加後的值為 :30相加後的值為 :40

view code

2.將列表內的元素根據位數合併成字典

lst = [1,2,4,8,16,32,64,128,256,512,1024,32769,65536,4294967296]#輸出

for i inli:

length=len(str(i))

dic.setdefault(length, )

dct2 ={}

view code

3.請盡量用簡潔的方法將二維陣列轉換成一位陣列

#轉換前

lst = [[1,2,3],[4,5,6],[7,8,9]]#轉換後[1,2,3,4,5,6,7,8,9]

答案:lst = [[1,2,3],[4,5,6],[7,8,9]]

li= [i for j in lst for i inj ]print(li)

view code

4.雜湊衝突迴避演算法迴避有哪幾種,分別有什麼特點?

答案:1.開放位址法2.鏈位址法3.公共溢位區法4.再雜湊法

view code

5.簡述python的字串駐留機制

答案:'''我們都知道python中的引用計數機制,相同物件引用其實都是記憶體中的同乙個位置,這也叫作"python的字串駐留機制"'''

view code

6.以下**輸出的是什麼?

ls = ["a","b","c","d","e"]print(ls[10:])

答案:view code

7.如下**段

importcopy

a= [1,2,3,[4,5],6]

b=ac=copy.copy(a)

d=copy.deepcopy(a)

答案:'''[1, 2, 3, [4, 5, 11], 6, 10]

[1, 2, 3, [4, 5, 11], 6, 10]

[1, 2, 3, [4, 5, 11], 6]

[1, 2, 3, [4, 5, 12], 6]'''

view code

解析:'''直接賦值

對於list,set,dict,來說,直接賦值,其實是把記憶體位址交給變數,並不是賦值乙份內容,所以,lst1的記憶體指向和lst2是一樣的,lst1改變了,lst2也發生了改變

淺拷貝淺拷貝,只會拷貝第一層,第二層的內容不會拷貝,所以稱為淺拷貝

深拷貝深度拷貝,把元素內部的元素完全進行拷貝複製,不會產生乙個改變另乙個跟著改變的問題'''

view code

8.有以下字典按照字典中的value進行排序

dic =

答案:d =

方法一:

sorted(d.items(),key= lambda x:x[1])

方法二:importoperator

sorted(d.items(),key= operator.itemgetter(1))

view code

9.給定兩個list a, b,請用python找出,a,b中相同的元素,a,b中不同的元素

10.下列敘述錯誤的是

a.棧是線性結構

b.佇列是線性結構

c.線性列表是線性結構

d.二叉樹是線性結構

答案:d

11.字典的item()和iteritems的區別是什麼

答案:'''字典的items方法作用:是可以將字典中的所有項,以列表方式返回。因為字典是無序的,所以用items方法返回字典的所有項,也是沒有順序的。

字典的iteritems方法作用:與items方法相比作用大致相同,只是它的返回值不是列表,而是乙個迭代器。'''

view code

12.閱讀**寫出結果:

li = [2,4,5,6,7]for i inli:if i % 2 ==0:

li.remove(i)print(li)

view code

答案:[4,5,7]

view code

13.字典取值的三種方法

答案:person = #第一種 若鍵不存在則會丟擲keyerror異常

person['city']#第二種 不會丟擲異常,不存在則返回none,也可以設定預設返回值

person.get('city',"上海")#第三種 與第二種類似,區別在於setdefault方法會更新字典

person.setdefault('city', '上海')

view code

14.請寫乙個函式,計算如下幾個字母代表的數字

ab-cd=ef

ef-gh=ppp

答案 :

deffun():

li= [111,222,]for ab in range(10,100):for cd in range(10,100):for gh in range(10,100):

ppp= ab-cd+ghif ppp in li and (ab-cd)>=10:yield [ab,cd,ab-cd,gh,ppp]for item infun():

new_item=map(str,item)

s= "".join(new_item)

length=len(s)if len(set(s)) == length-2: # 其中a,b,c,d,e,f,g,h,p不能相等,(去重之後的長度如果與原來的長度相等,則a,b,c,d,e,f,g,h,p是不相等的)print(item)

解析:ab-cd=ef

ef+gh=ppp

可以換算為:ab-cd+gh=ppp

未完......

python3經典例題 經典例題 Python

python python開發 python語言 經典例題 python 經典例題 if巢狀 1.使用者輸入賬號 2.使用者輸入密碼 3.判斷使用者的賬號是不是alex 4.如果賬號是alex在繼續判斷密碼是不是alexdsb 5.賬號和密碼都正確提示使用者alex就是乙個dsb 6.如果賬號正確密...

python面試經典題 Python經典面試題

1 邏輯運算子的運算 and or not 優先順序,not and or print not 2 1 and 3 4 or 4 5 and 2 1 and 9 8 or 7 6 f x or y x true,則返回x print 1 or 2 1 print 3 or 2 3 print 0 o...

Python經典面試題

將字串列表 aycc kh llc u l 通過演算法處理為 y k c u l 對調首尾字串的位置,拼接字串列表中的字元,組成字串 lucky lst aycc kh llc u l 生成 3,2,1,1,1 這樣乙個索引列表 lst inde 2 i if 2 i 0else 1 for i i...