Python----一些面试题
1.写出以下结果
print(1<2 and 2==2) print(1<2 and 2==1) print(1>2 and 2==2)
结果:
True
False
False
解:
18. xrange和range的区别?
答案: 这个题的环境应该放在python2.x中,因为python3中将xrange和range合并为了range
在python2中 range的返回值为list,生成一个序列, xrange则是作为一个生成器.相对来说xrange比range性能优化很多.
在python3中 range的返回值为range对象 <class 'range'>
39. a = range(10),a[::-3] 的结果是_____.
答案: range(9, -1, -3)
41.将列表内的元素,根据位数合并成字典
lst = [1,2,4,16,32,64,128,256,512,1024,32679,65536,4294967296] # 要求输出为 { 1: [1, 2, 4], 2: [16, 32, 64], 3: [128, 256, 512], 4: [1024], 5: [32679, 65536], 6: [4294967296] }
解:
dic = {} for i in range(1,7): dic[i] = [] print(dic) for el in lst: c = 0 a = el while a != 0 and c <= 5: a = a // 10 c += 1 print(c) dic[c].append(el) print(dic)
这个题判断位数时有两种思路,我上面用的是将数字// floor除以10,计算除的次数,次数就是这个数字的位数.另一种思路是将数字转化为str,用len()来计算字符串长度来判断位数,这里就不详细写出第二种方式的解法了
42.请尽量用简洁的方法将二维数组转换成一维数组
例:转换前 lst = [[1,2,3],[4,5,6],[7,8,9]] , 转换后 lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
解法:
lst = [ c for el in lst for c in el] print(lst)
43.将列表按下列规则排序,补全代码 sorted(lst, key=lambda x:__)
1.正数在前负数在后
2.正数从小到大
3.负数从大到小
例:
排序前 [0,4,5,7,-2,-5,-8]
排序后 [0,4,5,7,-2,-5,-8]
答案: sorted(lst,key=lambda x:(x<0,abs(x)))