您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“Python高頻面試題有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
一. Given an array of integers
給定一個(gè)整數(shù)數(shù)組和一個(gè)目標(biāo)值,找出數(shù)組中和為目標(biāo)值的兩個(gè)數(shù)。你可以假設(shè)每個(gè)輸入只對(duì)應(yīng)一種答案,且同樣的元素不能被重復(fù)利用。示例:給定nums = [2,7,11,15],target=9 因?yàn)?nums[0]+nums[1] = 2+7 =9,所以返回[0,1]
class Solution: def twoSum(self,nums,target): """ :type nums: List[int] :type target: int :rtype: List[int] """ d = {} size = 0 while size < len(nums): if target-nums[size] in d: if d[target-nums[size]] <size: return [d[target-nums[size]],size] else: d[nums[size]] = size size = size +1 solution = Solution() list = [2,7,11,15] target = 9 nums = solution.twoSum(list,target) print(nums)
給列表中的字典排序:假設(shè)有如下list對(duì)象,alist=[{“name”:“a”,“age”:20},{“name”:“b”,“age”:30},{“name”:“c”,“age”:25}],將alist中的元素按照age從大到小排序 alist=[{“name”:“a”,“age”:20},{“name”:“b”,“age”:30},{“name”:“c”,“age”:25}]
alist_sort = sorted(alist,key=lambda e: e.__getitem__('age'),reverse=True)
二. python代碼實(shí)現(xiàn)刪除一個(gè)list里面的重復(fù)元素
def distFunc1(a): """使用集合去重""" a = list(set(a)) print(a) def distFunc2(a): """將一個(gè)列表的數(shù)據(jù)取出放到另一個(gè)列表中,中間作判斷""" list = [] for i in a: if i not in list: list.append(i) #如果需要排序的話用sort list.sort() print(list) def distFunc3(a): """使用字典""" b = {} b = b.fromkeys(a) c = list(b.keys()) print(c) if __name__ == "__main__": a = [1,2,4,2,4,5,7,10,5,5,7,8,9,0,3] distFunc1(a) distFunc2(a) distFunc3(a)
三. 統(tǒng)計(jì)一個(gè)文本中單詞頻次最高的10個(gè)單詞?
import re # 方法一 def test(filepath): distone = {} with open(filepath) as f: for line in f: line = re.sub("\W+", " ", line) lineone = line.split() for keyone in lineone: if not distone.get(keyone): distone[keyone] = 1 else: distone[keyone] += 1 num_ten = sorted(distone.items(), key=lambda x:x[1], reverse=True)[:10] num_ten =[x[0] for x in num_ten] return num_ten # 方法二 # 使用 built-in 的 Counter 里面的 most_common import re from collections import Counter def test2(filepath): with open(filepath) as f: return list(map(lambda c: c[0], Counter(re.sub("\W+", " ", f.read()).split()).most_common(10)))
四. 請(qǐng)寫出一個(gè)函數(shù)滿足以下條件
該函數(shù)的輸入是一個(gè)僅包含數(shù)字的list,輸出一個(gè)新的list,其中每一個(gè)元素要滿足以下條件:
1、該元素是偶數(shù)
2、該元素在原list中是在偶數(shù)的位置(index是偶數(shù))
def num_list(num): return [i for i in num if i %2 ==0 and num.index(i)%2==0] num = [0,1,2,3,4,5,6,7,8,9,10] result = num_list(num) print(result)
五. 使用單一的列表生成式來(lái)產(chǎn)生一個(gè)新的列表
該列表只包含滿足以下條件的值,元素為原始列表中偶數(shù)切片
list_data = [1,2,5,8,10,3,18,6,20] res = [x for x in list_data[::2] if x %2 ==0] print(res)
六. 用一行代碼生成[1,4,9,16,25,36,49,64,81,100]
[x * x for x in range(1,11)]
七. 輸入某年某月某日,判斷這一天是這一年的第幾天?
import datetime y = int(input("請(qǐng)輸入4位數(shù)字的年份:")) m = int(input("請(qǐng)輸入月份:")) d = int(input("請(qǐng)輸入是哪一天")) targetDay = datetime.date(y,m,d) dayCount = targetDay - datetime.date(targetDay.year -1,12,31) print("%s是 %s年的第%s天。"%(targetDay,y,dayCount.days))
八. 兩個(gè)有序列表,l1,l2,對(duì)這兩個(gè)列表進(jìn)行合并不可使用extend
def loop_merge_sort(l1,l2): tmp = [] while len(l1)>0 and len(l2)>0: if l1[0] <l2[0]: tmp.append(l1[0]) del l1[0] else: tmp.append(l2[0]) del l2[0] while len(l1)>0: tmp.append(l1[0]) del l1[0] while len(l2)>0: tmp.append(l2[0]) del l2[0] return tmp
九. 給定一個(gè)任意長(zhǎng)度數(shù)組,實(shí)現(xiàn)一個(gè)函數(shù)
讓所有奇數(shù)都在偶數(shù)前面,而且奇數(shù)升序排列,偶數(shù)降序排序,如字符串’1982376455’,變成’1355798642’
# 方法一 def func1(l): if isinstance(l, str): l = [int(i) for i in l] l.sort(reverse=True) for i in range(len(l)): if l[i] % 2 > 0: l.insert(0, l.pop(i)) print(''.join(str(e) for e in l)) # 方法二 def func2(l): print("".join(sorted(l, key=lambda x: int(x) % 2 == 0 and 20 - int(x) or int(x))))
十. 寫一個(gè)函數(shù)找出一個(gè)整數(shù)數(shù)組中,第二大的數(shù)
def find_second_large_num(num_list): """ 找出數(shù)組第2大的數(shù)字 """ # 方法一 # 直接排序,輸出倒數(shù)第二個(gè)數(shù)即可 tmp_list = sorted(num_list) print("方法一\nSecond_large_num is :", tmp_list[-2]) # 方法二 # 設(shè)置兩個(gè)標(biāo)志位一個(gè)存儲(chǔ)最大數(shù)一個(gè)存儲(chǔ)次大數(shù) # two 存儲(chǔ)次大值,one 存儲(chǔ)最大值,遍歷一次數(shù)組即可,先判斷是否大于 one,若大于將 one 的值給 two,將 num_list[i] 的值給 one,否則比較是否大于two,若大于直接將 num_list[i] 的值給two,否則pass one = num_list[0] two = num_list[0] for i in range(1, len(num_list)): if num_list[i] > one: two = one one = num_list[i] elif num_list[i] > two: two = num_list[i] print("方法二\nSecond_large_num is :", two) # 方法三 # 用 reduce 與邏輯符號(hào) (and, or) # 基本思路與方法二一樣,但是不需要用 if 進(jìn)行判斷。 from functools import reduce num = reduce(lambda ot, x: ot[1] < x and (ot[1], x) or ot[0] < x and (x, ot[1]) or ot, num_list, (0, 0))[0] print("方法三\nSecond_large_num is :", num) if __name__ == '__main___': num_list = [34, 11, 23, 56, 78, 0, 9, 12, 3, 7, 5] find_second_large_num(num_list)
“Python高頻面試題有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。