Python面試必刷題系列(3)

下面給大家分享的是python面試必刷題系列文章,后面會(huì)陸續(xù)整理更多python相關(guān)的問(wèn)題給大家,無(wú)論是求職者還是新人都可以通過(guò)面試題來(lái)考察自己的能力缺陷。

1. 已知 list0 = [1,2,3,1,2],請(qǐng)對(duì) list0中的元素去重,但是需要保證原有順序。

list0 = [1,0,3,7,7,5]
format_list = list(set(list0))
format_list.sort(key=list0.index)
print (format_list)

2. 按照下面列表中的字典key:年齡進(jìn)行降序排序

d1 = [
    {'name':'alice', 'age':38},
    {'name':'bob', 'age':18},
    {'name':'Carl', 'age':28},
]

代碼:

sorted(d1,key = lambda x : x["age"], reverse=True)

3. 說(shuō)說(shuō)Python3 和 Python2 之間的區(qū)別?

  • import方式:Py3是以絕對(duì)路徑的方式進(jìn)行import,Py2則是相對(duì)路徑方式。
  • 新老式類(lèi):Python中的類(lèi)為多繼承方式。Py2中的類(lèi)有兩種:新式類(lèi)和經(jīng)典類(lèi)(區(qū)別:新式類(lèi)繼承自object,多繼承時(shí)屬性搜索順序?yàn)閺V度優(yōu)先,而經(jīng)典類(lèi)不繼承object,搜索順序?yàn)樯疃葍?yōu)先),Py3中都是新式類(lèi)。
  • 字符編碼:

? (1) 默認(rèn)編碼方式:Py2是ASCII 碼,Py3是Unicode;

? (2) 字符串存儲(chǔ)方式的不同:

py2:
    unicode         v = u"root"    本質(zhì)上用unicode存儲(chǔ)(萬(wàn)國(guó)碼)
    (str/bytes)     v = "root"     本質(zhì)用字節(jié)存儲(chǔ)
py3:
    str             v = "root"     本質(zhì)上用unicode存儲(chǔ)(萬(wàn)國(guó)碼)
    bytes           v = b"root"    本質(zhì)上用字節(jié)存儲(chǔ)
  • print函數(shù):Py2中print是語(yǔ)句,不需要();Py3中print是函數(shù),必須加()。
  • 除法運(yùn)算:Py2的除法:10/3=3:Py3:10//3=3 ;10/3=3.3333333333333335
  • range:Py2中,range的結(jié)果是list類(lèi)型,xrange的結(jié)果是生成器(更高效) ;Py3中,range結(jié)果就是生成器,xrange被廢棄。
  • dict返回迭代結(jié)果:Py3中dict的.keys()、.items() 和.values()方法返回迭代器而不是Py2中的list,Py2中的iterkeys()等函數(shù)被廢棄。
  • long數(shù)據(jù)類(lèi)型:Py3去除了long類(lèi)型,現(xiàn)在只有一種整型——int,但它的行為就像Py2版本的long
  • 鍵盤(pán)輸入的區(qū)別:Py2:raw_input( "提示信息" );Py3:input( "提示信息" )
  • 庫(kù)的變化:這個(gè)就太多啦~~
  • 其他變化:參考:https://www.cnblogs.com/feifeifeisir/p/9599218.html

4. 一行代碼展開(kāi)該列表[[1,2],[3,4],[5,6]],得出[1,2,3,4,5,6]

[j for i in a for j in i]

5. 字典操作中 del 和 pop 有什么區(qū)別?

  • pop(key [, default ] ) pop會(huì)返回被刪除的值,如果沒(méi)有返回default。
  • del也是刪除key,但是不返回key對(duì)應(yīng)的value。

6. 簡(jiǎn)述解釋型和編譯型編程語(yǔ)言

【編譯型語(yǔ)言】

把源程序全部編譯成二進(jìn)制代碼形式的可直接執(zhí)行程序。

特點(diǎn):執(zhí)行速度快、效率高、占內(nèi)存少;跨平臺(tái)性差、程序難于調(diào)試。

例子:C、C++

【解釋型語(yǔ)言】

不需要預(yù)先編譯,源程序由解釋器解釋一句執(zhí)行一句,直到結(jié)束。

特點(diǎn):執(zhí)行速度慢、效率低、占內(nèi)存高(因?yàn)檫\(yùn)行時(shí)需要啟動(dòng)解釋器);便于調(diào)試、跨平臺(tái)性好(有相應(yīng)解釋器就行)。

例子:Python、Java、JavaScript

需要注意的是:

java是一類(lèi)特殊的編程語(yǔ)言,Java程序也需要編譯,但是卻沒(méi)有直接編譯為機(jī)器語(yǔ)言,而是編譯為字節(jié)碼,然后在Java虛擬機(jī)上以解釋方式執(zhí)行字節(jié)碼。

7. 求列表list1和list2中元素的交集,并集和差集

set1, set2 = set(list1), set(list2)
print set1&set2, set1|set2, set1-set2, set2-set1

8. 合并兩個(gè)字典 a 和 b 有哪些方法?

dict(a, **b)
dict(a.items() + b.items())
c = {}  c.update(a)  c.update(b)

9. Python 解釋器種類(lèi)以及相關(guān)特點(diǎn)?

Python程序需要經(jīng)過(guò)解釋器解釋后才能執(zhí)行,可以基于不同語(yǔ)言開(kāi)發(fā)解釋器,以下五種Python解釋器最常見(jiàn):

  • CPython:官方解釋器,C語(yǔ)言開(kāi)發(fā),使用最廣泛。
  • IPython:基于CPython的一個(gè)交互式解釋器,只增強(qiáng)了CPython的交互性,其他不變。
  • PyPy:采用JIT技術(shù),對(duì)Python代碼進(jìn)行動(dòng)態(tài)編譯,執(zhí)行速度顯著提升。
  • Jython:運(yùn)行在Java平臺(tái)上的解釋器,把Python代碼直接編譯成Java字節(jié)碼執(zhí)行。
  • IronPython:運(yùn)行在微軟.NET平臺(tái)上的解釋器,把Python代碼直接編譯成.NET字節(jié)碼執(zhí)行。

10. 如何把元組("a","b")和元組(1,2),變?yōu)樽值鋥"a":1,"b":2}

dict([(k, v) for k, v in zip(a, b)])

11. 一行代碼交換字典d = {"A" : 1,"B" : 2}的鍵和值?

dict([(v,k) for k,v in d.items()])

12. 請(qǐng)將[i for i in range(3)]改成生成器

(i for i in range(3))

13. 如何區(qū)別可變數(shù)據(jù)類(lèi)型和不可變數(shù)據(jù)類(lèi)型

  • 不可變數(shù)據(jù)類(lèi)型:當(dāng)該數(shù)據(jù)類(lèi)型的對(duì)應(yīng)變量的值發(fā)生了改變,那么它對(duì)應(yīng)的內(nèi)存地址也會(huì)發(fā)生改變,對(duì)于這種數(shù)據(jù)類(lèi)型,就稱(chēng)不可變數(shù)據(jù)類(lèi)型。比如:int,str,tuple
  • 可變數(shù)據(jù)類(lèi)型:當(dāng)該數(shù)據(jù)類(lèi)型的對(duì)應(yīng)變量的值發(fā)生了改變,那么它對(duì)應(yīng)的內(nèi)存地址不發(fā)生改變,對(duì)于這種數(shù)據(jù)類(lèi)型,就稱(chēng)可變數(shù)據(jù)類(lèi)型。比如:list,set,dict
  • 總結(jié):不可變數(shù)據(jù)類(lèi)型更改后地址發(fā)生改變,可變數(shù)據(jù)類(lèi)型更改地址不發(fā)生改變

注意:

元組被定義為:只讀列表,即數(shù)據(jù)可以被查詢,但不能被修改。當(dāng)我們修改元組的內(nèi)容時(shí),發(fā)現(xiàn)其內(nèi)存地址不會(huì)變。

14. 如何打亂一個(gè)list中的元素?

from random import shuffle
mylist=[0,1,2,3,4,5,6,7,8]
shuffle(mylist)
print(mylist)
歡迎關(guān)注-算法研習(xí)社.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容