面试题分享

常见面试题

  1. 比较运算及数字
     print(1 > 2 and 3 or 4)

    思路为运算符规则:() > not > and > or,同一优先级从左至右以此计算;还有与0得0或1得1的口诀。故此题先算and,1>2为False,所以根据口诀and后面不用管,结果为False,继续看False or 4同样根据口诀可以得出结果为4。

  2. 纯数字
    print(0 or 2 and 3 and 4 or 6 and 0 or 3) 

    思路为运算符规则:() > not > and > or,同一优先级从左至右以此计算;x or y if x True,return x,else y;x and y if x True,return y,else x

    的规则。故此题先算and,2 and 3为3,3 and 4为4,3 and 4为4,6 and 0为0,0 or 4 or3即为4。

  3. 分别赋值:已知a=1,b=3,用一行代码将a和b的值互换
    a,b=b,a

    思路为:利用分别赋值将b和a原来的值分别再赋值给a和b达到值互换的需求

  4. 列表的去重:l1 = [11, 11, 22, 22, 33, 33, 33, 44]将l1列表去重
    l2 = list(set(l1))#先将列表转换为集合去重后再赋值成列表,如果列表元素中有bool值需要注意去重时候会按照第一个出现的True及False去重
    l2.sort()#如果要求排序则加
    print(l2)
  5. 切片:是浅copy
    l1 = [1,2,3,4,5,6,[11,22]]
    l2 = l1[:]
    l1[-1].append(999)
    l1.append(666)
    print(l1,l2)
    执行结果:
    [1, 2, 3, 4, 5, 6, [11, 22, 999], 666] 
    [1, 2, 3, 4, 5, 6, [11, 22, 999]]
    
原文地址:https://www.cnblogs.com/changwentao/p/8964507.html