python 函式經典題

2021-09-24 22:14:45 字數 1413 閱讀 8268

#1.經典面試題1 滑動序列

#1.可滑動額序列,自定義乙個函式,根據引數n的值,變成對應個元素的容器(zip)

listvar=[1,2,3,4,5,6,7,8,9]

n=2listvar=[[1,2],[3,4],[5,6],[7,8]]

n=3listvar=[[1,2,3],[4,5,6],[7,8,9]]

n=4listvar=[[1,2,3,4],[4,6,7,8]]

#利用列表的切片和zip函式構造滑動序列

#n=2時

#listvar[0::2] listvar[1::2] i#zip(list1,list2…listn)=>zip(*args)

#print(*[listvar[i::4]for i in range (2)])

listvar=[1,2,3,4,5,6,7,8,9]

def myfunc(lst,n):

return list( map(list,zip(*[lst[i::n] for i in range(n)])))

#print(myfunc(listvar,2))

#2 經典面試題2

#引數時可變的量的預設賦值

def func():

return [lambda x:i*x for i in range(4)]

res=[m(2)for m in func()]

#函式定義時不執行**裡面的變數因此i在定義時不會參與計算,因區域性i被內函式呼叫,並且被內函式返回,所以這個函式時閉包函式,根據閉包函式可知區域性變數i生命週期得到延長,i=3,定義完這個函式之後i的值就是3

#呼叫時i=3 [m(2) in func()] =>[6,6,6,6]

def add(a,b):

return a+b

def test():

for i in range(4):

yield i

g=test()

for n in [2,10]:

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

print(type(g))

print("<*********>")

print(list(g))

『』』在迴圈的時候,定義了2個生成器表示式,在定義不會去執行表示式當中的內容

迴圈完畢,此刻n就是10,然後開始呼叫生成器g

這個時候迴圈了2次生成器,可以簡寫成

g=test()

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

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

每次獲取的g都是上乙個g對應的範圍

依次求職即可

(1)迴圈生成器時候,是迴圈了2次

(2)迴圈呼叫時,n的值已經是10

(3)乙個函式經過多次定義,函式func呼叫時只執行最後一次的定義

『』』

python面試經典題 Python經典面試題

1 邏輯運算子的運算 and or not 優先順序,not and or print not 2 1 and 3 4 or 4 5 and 2 1 and 9 8 or 7 6 f x or y x true,則返回x print 1 or 2 1 print 3 or 2 3 print 0 o...

Python 經典演算法題

概念 動態規劃過程是 每次決策依賴於當前狀態,又隨即引起狀態的轉移。乙個決策序列就是在變化的狀態中產生出來的,所以,這種多階段最優化決策解決問題的過程就稱為動態規劃。演算法關鍵點 1 最優化原理,也就是最有子結構性質。這指的是乙個最優化策略具有這樣的性質,無論過去狀態和決策如何,對前面的決策所形成的...

Python經典入門100題 41 50題

例項041 類的方法與變數 題目 模仿靜態變數的用法。deffunc i 0print i i 1class cls i 1def dummy self print self.i self.i 1cls cls for i in range 2 func cls.dummy 例項042 變數作用域 ...