基礎部分
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...