• 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']

    相信通过前面几个例子,我们也可以指定这个题目是怎么一回事了吧。这里就不解释了。

  • 相关阅读:
    POJ 2774 Long Long Message
    Jmeter学习——5
    Jmeter学习——4
    Jmeter学习——10
    Jmeter学习——9
    使用 JMeter 完成常用的压力测试 [转]
    Jmeter学习——3
    Jmeter学习——7
    Jmeter学习——11
    Jmeter学习——8
  • 原文地址:https://www.cnblogs.com/landhu/p/16276355.html
Copyright © 2020-2023  润新知