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))) 

 

posted @ 2019-01-24 17:49  robertx  阅读(253)  评论(0编辑  收藏  举报