莫愁前路无知己,天下谁人不识君。。。。

关于阿里python基础面试题的感想一二

上一篇 / 下一篇  2018-05-04 10:56:03 / 个人分类:python知识精髓

阿里的笔试题描述如下:
1、请列举python列表的成员方法,并给出以下列表操作的答案:
1) a=[1, 2, 3, 4, 5], a[::2] = ?, a[-2:] = ?
2) 用一行代码实现,对列表a中偶数位置的元素,进行加3后求和?
3) 将列表a的元素顺序打乱,再对a进行排序而获得列表b,把ab按元素顺序构造一个字典d
典型的列表问题:
第一题很基础:[1,3,5]      [4,5]
第二题就有个争议:偶数位置代表下标的偶数位置还是该数字的当前偶数位置??
如果是下标的偶数位置:[1,3,5]
如果是该数字偶数位置:[2,4]
针对第一种:用网上网友的不不解析法,值得我们学习
a.取得偶数下标:filter
filter(lambda x:x%2==0,range(lenth(a)))
b.取出下标对应值:map
map(lambdax:a[x],filter(lambdax:x%2==0,range(lenth(a))))
c.对应值加3:lambda
map(lambda x:x+3,map(lambdax:a[x],filter(lambdax:x%2==0,range(lenth(a)))))
d.对数组求和:reduce
reduce(lambdy x,y:x+y,map(lambda x:x+3,map(lambdax:a[x],filter(lambdax:x%2==0,range(lenth(a))))))
我觉得这个网友很用心,一下子用了map,lambda,reduce
改一下:x%2==1,就是第二种答案
方法二:
A = reduce( lambda x, y : x + y, map( lambda i: i+3, list( filter( lambda y:y%2 == 0, a ) ) ) )---【2,4】
B = sum(list( map( lambda x: x + 3, list( filter( lambda y:y%2 == 0, a ) ) ) ) )  -----【2,4】
方法三:
C = reduce(lambda x, y: x+y, map(lambda x: x+3, a[1::2]))
(3)小题的答案:
a.顺序打乱:random中shuffle
random.shuffle(a)
b.列表排序     # 逆序 a.reverse()
sorted(a)
c.构造字典dict与zip
dict(zip(a,sorted(a)))

TAG: 经典python试题

 

评分:0

我来说两句

Open Toolbar