Python面試題(一)

2021-10-09 14:03:20 字數 3896 閱讀 8127

def extendlist(val,list=):

return list

list1 = extendlist(10)

list2 = extendlist(123,)

list3 = extendlist("a")

print(list1)

print(list2)

print(list3)

執行結果和解析過程

"""

[10, 'a']

[123]

[10, 'a']

考察點: 引用的指向、預設引數

list3和list1為同乙個列表,

而list2->extendlist(123,) 給list=重新賦值,是乙個重新的列表,

(1)當棧**現了乙個list1,list1指向了堆中的乙個空列表

(2)棧**現了乙個list2,list2指向了堆中的另乙個空列表,不是預設的空列表,是重新賦值的(list=)

(3)棧中 出現了乙個list3,並沒有在堆中重新建空列表,而是預設的列表,所以把"a"就新增到預設的列表中

"""

# 注意列印的位置不同,結果也會不同

def extendlist(val,list=):

return list

list1 = extendlist(10)

print(list1)

list2 = extendlist(123,)

print(list2)

list3 = extendlist("a")

print(list3)

"""列印結果

[10]

[123]

[10, 'a']

"""

def div1(x, y):

print("%s/%s=%s" % (x, y, x / y))

def div2(x, y):

print("%s//%s=%s" % (x, y, x // y))

div1(5,2)

div1(5.0,2) # 5. 就相當於5.0

div2(5,2)

div2(5.0,2)

執行結果:

"""

5/2=2.5

5.0/2=2.5

5//2=2

5.0//2=2.0

"""

list1 = [  ] * 5

print(list1)

print(list1)

print(list1)

print(list1)

執行結果:

"""

[, , , , ]

[[10], [10], [10], [10], [10]]

[[10, 20], [10, 20], [10, 20], [10, 20], [10, 20]]

[[10, 20], [10, 20], [10, 20], [10, 20], [10, 20], 30]

思路: 在list1中儲存了5個空列表(其實記憶體中儲存的是5個同一列表位址,同乙個實體),

給其中乙個小列表中新增元素,所有的小列表都會被追加

"""

#  注意儲存的記憶體位址情況

list1 = ['a', 'b', 'c', 'd']

print(list1[10:])

"""

列印結果:

"""

def func(x, l=):

for i in range(x):

print(l)

func(2)

func(3, [3, 2, 1])

func(3)

列印結果:

"""

列印結果:

[0, 1]

[3, 2, 1, 0, 1, 4]

[0, 1, 0, 1, 4]

"""

def _add(a):

def add(b):

return a + b

return add

ad = _add(1)

print(ad(1))

print(ad(2))

print(ad(3))

列印結果:

"""

考察的是閉包,閉包中的外部和內部函式和普通函式的用法完全相同,可以設定引數和返回值

變數可以指向乙個函式,該變數可以被當做函式呼叫

列印結果:23

4"""

def myfunc(a, b, c, d):

print(a, b)

mylist = [1, 2, 3, 4]

myfunc(*mylist) # 傳的還是列表

"""

考察拆包和解包

注意 : 如果****作為實參,則將容器中的元素給形參進行賦值,

此時需要保證形參和實參的數量一致

列印結果:

1 2"""

str1 = "hello python"

str1.title()

print(str1)

"""

title()將每個字串的首字母大寫,但是特別注意的是

只要遇到字串的改變得到都是新字串,原字串不變

要賦值給乙個新的變數,再進行列印

hello python

"""

def text(l):

l[1] = 10

list1 = [1, 2, 3, 4]

text(list1)

print(list1)

"""

# 引用傳遞:如果形參發生改變,則實參也會隨著發生改變

列印結果

[1, 10, 3, 4]

"""

a0 = 

a1 = range(10)

a2 = [i for i in a1 if i in a0]

a3 = [a0[s] for s in a0]

a4 = [i for i in a1 if i in a3]

a5 =

a6 = [[i, i * i] for i in a1]

print(a0)

print(a1)

print(a2)

print(a3)

print(a4)

print(a5)

print(a6)

"""

a2裡面的條件都不滿足,都不是鍵,即為空列表

a3相當於取了a0裡面的所有的鍵對應的值組成乙個列表

列印結果:

range(0, 10)

[1, 2, 3, 4, 5]

[1, 2, 3, 4, 5]

[[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]

"""

python面試題(一)

整理了一些python面試可能遇到的題,提供給大家,希望能對大家有用!1.下面的 會輸出什麼?def extend list val,list return list list1 extend list 10 list2 extend list 123,list3 extend list a pri...

python面試題(一)

最近因為找工作,所以在牛客網上刷了一些題,想在部落格上記錄下來自己的想法 寫的不好還請大家多指教。1.二維陣列中的查詢 在乙個二維陣列中 每個一維陣列的長度相同 每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含...

python語法面試題 python面試題

1.去重,集合 集合的乙個重要特點是 自動去除重複的值 li 1,2,3,1,1,2,2,3,3 去除重複的元素 set set li 轉換為集合,因為集合會自動去重。print set li list set 將集合轉換為列表print li 2.生成器 規則 生成器函式,或者生成器表示式,在呼叫...