常见面试题
- 比较运算及数字
print(1 > 2 and 3 or 4)
思路为运算符规则:() > not > and > or,同一优先级从左至右以此计算;还有与0得0和或1得1的口诀。故此题先算and,1>2为False,所以根据口诀and后面不用管,结果为False,继续看False or 4同样根据口诀可以得出结果为4。
- 纯数字
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。
- 分别赋值:已知a=1,b=3,用一行代码将a和b的值互换
a,b=b,a
思路为:利用分别赋值将b和a原来的值分别再赋值给a和b达到值互换的需求。
- 列表的去重:l1 = [11, 11, 22, 22, 33, 33, 33, 44]将l1列表去重
l2 = list(set(l1))#先将列表转换为集合去重后再赋值成列表,如果列表元素中有bool值需要注意去重时候会按照第一个出现的True及False去重 l2.sort()#如果要求排序则加 print(l2)
- 切片:是浅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]]