python語法面試題 python面試題

2021-10-11 22:01:13 字數 3285 閱讀 4900

1.去重,集合

集合的乙個重要特點是:自動去除重複的值

li = [1,2,3,1,1,2,2,3,3]#去除重複的元素

set=set(li)    #轉換為集合,因為集合會自動去重。print(set)

li=list(set)#將集合轉換為列表print(li)

2.生成器

規則:生成器函式,或者生成器表示式,在呼叫後返回生成器,但生成器內部的函式沒有執行,只有在從生成器中取值是,其內部的函式才執行。

乙個生成器只能只能用一次:將乙個生成器中的值全部取出來之後,再從中取值得到的是空。

從生成器中取值:

for:如果沒有break,會一直取知道取完。

next:乙個乙個取

資料型別強**會一次性把所有的資料都讀到記憶體裡。

在生成器表示式外有for迴圈時,把for迴圈拆開來分析。

defdemo():for i in range(4):yieldi

g=demo()

g1=(i for i ing)

g2=(i for i ing1)print(list(g1))print(list(g2))

在執行list(g1)之前,生成器函式,生成器表示式中的內容都沒有執行。(只有從生成器中取值時,生成器函式,生成器表示式中的內容才會執行)

當執行list(g1)時,就是從g1這個生成器中取值(資料型別強轉),g1又去找g要值,所以執行結果是:[0,1,2,3]。

當執行list(g2)時,g2生成器會找g1生成器要值,而list(g1)語句,以及將生成器g1中的值取出來,所以g1是空,執行結果為:

defadd(n,i):return n+ideftest():for i in range(4):yieldi

g=test()for n in [1,10]:

g=(add(n,i) for i ing)print(list(g))

同上:在list(g)之前,生成器函式,生成器表示式內的語句都沒有執行。只有當取生成器中的值得時候才執行。

遇見for迴圈裡面有生成器表示式,將for迴圈拆解開來。

n = 1

g = (add(n,i) for i in g)

n = 10

g = (add(n,i) for i in g)

當執行list(g)時,生成器函式或者是生成器表示式中的內容開始執行。

n就變成了迴圈中的最後乙個值。

for迴圈中就變為:

n = 10

g = (add(n,i) for i in (add(n,i) for i in test()))

結果為:[20,21,22,23]

進度條列印

importtimedefdown():for i in range(0,101,2):

time.sleep(0.1)

char_num= i//2 #對i取商

#\r是每次列印從頭列印,%%列印%

#當i=100時,在最後列印乙個換行符,保證再有內容輸入時,從下一行輸入。

str = '\r%s%% : %s\n'%(i,'*'*char_num) if i == 100 else '\r%s%% : %s'%(i,'*'*char_num)print(str,end='',flush=true) #end:每次輸入的結束符號

匿名函式和內建函式

考察匿名函式式往往會結合內建函式。

可以結合匿名函式的內建函式:

min:求最小值,min(iterable,key)

max:同上

filtre:  ilter()函式接收乙個函式 f 和乙個list,這個函式 f 的作用是對每個元素進行判斷,返回 true或 false,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合                             條件元素組成的新list。filter(f,list)。結果不大於原來的list

map:  map()函式接收兩個引數,乙個是函式,乙個是序列,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的list返回。結果等於原來的list

sorted: 函式sorted進行排序(從2.4開始),返回副本,原始輸入不變

與sort的區別:函式sort進行排序,在本地進行排序,不返回副本

語法:sort(iterable,key,reverse)

iterable:是可迭代型別;

key:傳入乙個函式名,函式的引數是可迭代型別中的每一項,根據函式的返回值大小排序;

reverse:排序規則. reverse = true  降序 或者 reverse = false 公升序,有預設值(false)。

返回值:有序列表

1.#用匿名函式將兩個元組('a','b'),('c','d')變為[,]

deffunc(x):return

ret= zip(('a','b'),('c','d'))#輸出('a','c') ('b','d')

result=map(func,ret)print(list(result))#一行**實現

print(list(map(lambda trup:,zip(('a','b'),('c','d')))))

2.defmultipliers():return [lambda x:i*x for i in range(4)]#列表推導式

#執行完後:[lambda x:i*x,lambda x:i*x,lambda x:i*x,lambda x:i*x]

print([m(2) for m inmultipliers()])#執行 multipliers(),返回乙個列表(由列表推導式得到的)#執行for m in multipliers(),m就是列表裡的每乙個匿名函式#m(2)就是呼叫匿名函式#執行m(2)時,2傳給x,i最後是=3,所以lambda x:i*x --> 3*2

#結果:[6, 6, 6, 6]

defmultipliers():return (lambda x:i*x for i in range(4))#生成器表示式

print([m(2) for m inmultipliers()])#執行multipliers(),執行這個函式,返回乙個生成器,而生成器表示式中的語句沒有執行#執行一次for迴圈就相當於執行一次next()#執行一次for m in multipliers(),再執行一次lambda x:i*x for i in range(4),再執行一次m(2)#lambda x:0*x ---> m(2) 0*2=0#lambda x:1*x ---> m(2) 1*2=2#lambda x:2*x ---> m(2) 2*2=4#lambda x:3*x ---> m(2) 3*2=6

#結果:[0, 2, 4, 6]

mysql語法 面試題

新增主鍵 alter table 表名 modify id int primary key 刪除主鍵 alter table 表名 drop primary key mysql約束 預設約束 default 非空約束 not null 唯一約束 unique 主鍵約束 primary key 非空且...

C 面試題(語法,附答案)

1 delegate是引用型別還是值型別?enum int和string呢 難度係數40 答案 delegate引用型別,enum值型別,int引用型別,string引用型別 盡供參考 4 請指出c 中是否有下列關鍵字?virtual sealed abstract import as in got...

Python 面試題整理

請用 python程式或你擅長的語言寫出下面問題的答案 1 乙個不固定長度的字串,找出連續最長的0或連續最長的1 提示1 1110001111 其中連續 3個1與3個0與4個1 程式反饋結果要是最長的是4個1 提示2 1010001010 程式反饋結果最長的是 3個0 提示3 題目問的是不固定長度 ...