python iteye上2道面試題解答

2021-08-31 12:51:46 字數 1473 閱讀 7893

閒逛發現2道python題,位址

1.平衡點問題

平衡點:比如int numbers = ; 25前面的總和為24,25後面的總和也是24,25這個點就是平衡點;假如乙個陣列中的元素,其前面的部分等於後面的部分,那麼這個點的位序就是平衡點

要求:返回任何乙個平衡點 。

2.支配點問題:

支配數:陣列中某個元素出現的次數大於陣列總數的一半時就成為支配數,其所在位序成為支配點;比如int a = ;3為支配數,0,1,4分別為支配點;

要求:返回任何乙個支配點

本問題可歸結為眾數問題(統計學範疇),即一組資料中出現次數最多的那個數值,它可以沒有也可以為多個。

原作者的解答,就不說了,太長了,沒看。覺得可以寫的簡單些,有很多python**都嘗試一句搞定,如下:

[a[i] for i in range(len(a)) if a[i]==sum(a[0:i]) and a[i] == sum(a[i+1:len(a)+1])]

當然,寫出一句來得到結果。中間還是分析了其中的邏輯,以及寫簡單語句測試語法是否可行。

filter(lambda i:sum(s[:i])==sum(s[i+1:]), range(1,len(a)-1))
用到了lambda,filter之後,程式簡單多了。並且,對於切片,可以採用預設值。用預設值,會省很多事,寫過就知道。不過對於以上的語句,還可以更簡單些,也就是range可以用預設值。**如下:

filter(lambda i:sum(a[:i])==sum(a[i+1:]),range(len(a)))
更簡單點的就是,不需要用range,結果也是一樣的,**如下:

filter(lambda i:sum(a[:i])==sum(a[i+1:]),a)

注: 這裡的a為一元組,或者列表,結果都是一樣的,都支援這些len,range,sum這些函式,還有切片操作。

第一道題解答了,那麼第二道題,其實同第一道差不多。就是使用的環境有變化,直接給出解答:

filter(lambda x: a.count(x)>len(a)/2,range(len(a)))
對於類表解析,filter是過濾列表操作,還有乙個map()函式有乙個操作,同樣可以達到目的,**:

a = (1,1,2,3,1,1)

print filter(lambda x: a.count(x)>len(a)/2,range(len(a)))

print map(lambda x: a.count(x)>len(a)/2,a)

結果:[1]

[true, true, false, false, true, true]

上傳後發現**前面多了樣式的東西,編輯裡面又沒有。去掉

就是**了,比較晚了,不想再調了。

linux搭建禪道 在Linux上搭建禪道

碎碎念 第一次安裝還比較順利,做筆記的同時希望能給需要的同學們帶來一點點幫助!環境 在vmware的centos 6.8發行版本上搭建禪道 一 首先確認centos是32位還是64位系統,方法如下 root localhost getconf long bit 三 使用工具 我用的xftp 將安裝包...

推薦演算法面經2

以下為跟著我一塊做專案的小朋友面經 我的面經就是 1,不要放棄,不管做的東西簡單還是複雜,都要弄懂並深入理解簡歷上的每乙個知識點,並展開知識延伸,面到後來都是肌肉反應了,從每一次失敗中總結出自己回答的不好的地方,然後花時間鑽研,最終我從一次次拒信中走出,拿到了心怡的offer 2,長三角的機會的是真...

道cpu 道指令 道程式設計雜論2

我覺得還沒有理解我。多年來,我們一直在追趕國外先進的技術,然而到目前為止,國人能夠引以為傲的自主先進技術了了無幾,是我們國人的智商不夠,還是我們沒有資金研發,我看都不是。追其原因,應該是我們缺少正確思想去指導技術發展。我為何嘖嘖不休念著道指令,我個人認為道指令是指導軟體開發的思想基礎,我們要有 大道...