python面試題(四)
阿新 • • 發佈:2018-11-09
一、資料型別
1、字典
1.1 現有字典 dict={‘a’:24,‘g’:52,‘i’:12,‘k’:33}請按字典中的 value 值進行排序?
sorted(dict.items(),key=lambda x:x[1])
1.2說一下字典和json的區別?
字典是一種資料結構,json是一種資料的表現形式,字典的key值只要能hash就行,json的則必須是字串
1.3什麼是可變型別,什麼是不可變型別?
可變不可變是指記憶體中的值是否可以被改變,不可變是指物件記憶體塊中的值是不可以被改變的,不可變型別有數值、字串、元組。可變型別則是可以改變的,可變型別有列表和字典。
1.4存入字典裡的資料有沒有先後順序?
存入字典中的資料不會自動排序,可以使用sort函式對字典進行排序。
1.5字典推導式?
dict={k:v for (k,v) in iterable}
2、字串
2.1請反轉字串“sStr”
print("sStr"[::-1])
方法千萬種,其他的清自行腦補或搜尋
2.2 將字串”k:1|k1:2|k2:3|k3:4”,處理成Python字典:{k:1, k1:2, … } # 字 典裡的K作為字串處理
str1 = "k:1|k1:2|k2:3|k3:4" def srt2dict(str1): dict={} for items in str1.split("|"): k,v=items.split(":") dict[k]=v return dict print(srt2dict(str1))
2.3 請按alist中元素的age由大到小排序
alist=[{'name':'a','age':10},{'name':'b','age':20},{'name':'c','age':30}]
alist=[{'name':'a','age':10},{'name':'b','age':20},{'name':'c','age':30}]def sort_by_age(alist): return sorted(alist,key=lambda x:x["age"],reverse=True) print(sort_by_age(alist))
3、列表
3.1 下面程式碼的輸出結果將是什麼?
list = ['a','b','c','d','e'] print(list[10:])
輸出是一個空列表
1. 上面的程式碼將輸出[],不會產生IndexError錯誤。就像所期望的那樣,嘗試用超出成員的個數的index 2. 來獲取某個列表的成員。 3. 例如,嘗試獲取list[10]和之後的成員,會導致IndexError。
3.2 寫一個列表生成式,產生一個公差為11的等差數列
print([x*11 for x in range(10)])
3.3 給定兩個列表,怎麼找出他們相同的元素和不同的元素?
list1 = [1,2,3]
list2 = [3,4,5]
list1 = [1,2,3] list2 = [3,4,5] set1 = set(list1) set2 = set(list2) print(set1&set2) print(set1^set2)
3.4 請寫出一段Python程式碼實現刪除一個list裡面的重複元素?
l1 = ['b','c','d','b','c','a','a']
比較容易記憶的是用內建的set:
l1 = ['b','c','d','b','c','a','a'] print(list(set(l1)))
如果想要保持他們原來的排序:
用list類的sort方法:
l1 = ['b','c','d','b','c','a','a'] # print(list(set(l1))) l2 = list(set(l1)) l2.sort(key=l1.index) print(l2)
也可以這樣寫:
l1 = ['b','c','d','b','c','a','a'] l2 = sorted(set(l1),key=l1.index) print(l2)
也可以使用遍歷:
l1 = ['b','c','d','b','c','a','a'] l2 = [] for i in l1: if not i in l2: l2.append(i) print(l2)
3.5 給定兩個list A ,B,請用找出 A ,B中相同的元素,A ,B中不同的元素
1. A、B 中相同元素:print(set(A)&set(B)) 2. A、B 中不同元素:print(set(A)^set(B))
3.6 有如下陣列list = range(10)我想取以下幾個陣列,應該如何切片?
1. [1,2,3,4,5,6,7,8,9] 2. [1,2,3,4,5,6] 3. [3,4,5,6] 4. [9] 5. [1,3,5,7,9] 6. 答: 1. [1:] 2. [1:7] 3. [3:7] 4. [-1] 5. [1::2]
3.7 下面這段程式碼的輸出結果是什麼?請解釋?
def extendlist(val, list=[]): list.append(val) return list list1 = extendlist(10) list2 = extendlist(123, []) list3 = extendlist('a') print("list1 = %s" %list1) print("list2 = %s" %list2) print("list3 = %s" %list3) # 輸出結果: # list1 = [10, 'a'] # list2 = [123] # list3 = [10, 'a']