python幾道對於列表的面試題

朋友最近面試某個企業,其中有幾道列表的題目,對python中的列表知識需要有很清晰的認識。下面對這幾個題目列一下:

題目一:

alist = [1, 2, 3, 4, 5, 6]
for aa in alist:
    alist.remove(aa)
print(alist)

來來來,我們解析下題目。

我先說答案:

[2, 4, 6]

這裏很多人會說最後答案爲[]。

這是錯誤的。我們這裏要記住二點:

1.列表是可變的序列,所以在對原序列刪除時,序列就會變.

2. for循環真正是通過索引來找到元素的

所以。我們繼續看這個問題

當for爲第一次時,索引爲0,alist爲所有的。執行後alist爲[2,3,4,5,6]

當for第2次時,索引爲1,aa對應的索引對應爲3,執行後alist爲[2,4,5,6]

當for第3次時,索引爲2,aa對應爲索引對應爲5,執行後alist爲[2,4,6]

alist只爲3了,所以不會繼續執行for循環了

 

題目二:

gl_var = 1

gl_var = 1
gl_list = []

def test_function():
    gl_var = 2
    gl_list.append(1)

test_function()
print(gl_var, gl_list)

還是先直接說下答案:

1,[1]

這個題目,有2個考察點:

1. 局部變量和全局變量

2. 列表是可變的,定義的指定內存

gl_var是全局變量,但在含數中數據局啓變量,最終不改變值

gl_list是列表,在定義時,會執行一快內存分配給列表,函數中對列表做了改變,最終導致全局的gl_list也變更了

 

題目三:

 

def testExtend(val, list_l=[]):
    list_l.append(val)
    return list_l

list1 = testExtend(10)
list2 = testExtend(123,[])
list3 = testExtend('a')
print(list1, list2, list3)

還是直接先說答案吧,答案爲:

[10, 'a'] [123] [10, 'a']

說說原因:

我們這裏還是考慮列表的可變性,函數中list_l是一個可變列表。所以在實際中會改變值。

第2個含稅,傳了一個空列表噹噹數,所以就爲空

題目四:

class Test(object):
    def p_test(self, data=[]):
        data.sort()
        data.append('end')
        return data

test1 = Test()
print(test1.p_test())
test2 = Test()
print(test2.p_test())
test3 = Test()
print(test3.p_test(data=['name', 'age:35']))
test4=Test()
print(test4.p_test())

也還是直接說答案:

['end']
['end', 'end']
['age:35', 'name', 'end']
['end', 'end', 'end']

相信通過前面幾個例子,我們也可以指定這個題目是怎麼一回事了吧。這裏就不解釋了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章