一道面试题引发的pythonic
2017-03-14 18:16
316 查看
[本文出自天外归云的博客园]
今天一个朋友去面试,下面是一道测试工程师面试题(来自搜狗):
自己写了解法:
写了解法以后感觉到没有显现出python的优势,找大师兄学了一些pythonic的写法,比如将一个列表创建成字典有以下两种写法可以一行搞定(初始化每个key的value为0):
例如min()可以根据key也可以不用,不用key的话语句就会更短一些:
如果测试字符串“CRIUCEXPLORESGOUIUSCRIUdSCdRIdUdddS”自备的话,两行搞定:
原来还有import内置函数!现在就一行了:
是不是特别好玩!O(∩_∩)O哈哈哈~
今天一个朋友去面试,下面是一道测试工程师面试题(来自搜狗):
自己写了解法:
# -*- coding: utf-8 -*- import re def filter_log(target,the_log): r = '['+target+']' target_dic = {} for one in target: target_dic[one] = 0 for one in re.findall(r, the_log): target_dic[one] += 1 return min(target_dic.items(), key=lambda x: x[1])[1] if __name__ == '__main__': the_log = "CRIUCEXPLORESGOUIUSCRIUdSCdRIdUdddS" target = "CRIUS" print filter_log(target,the_log)
写了解法以后感觉到没有显现出python的优势,找大师兄学了一些pythonic的写法,比如将一个列表创建成字典有以下两种写法可以一行搞定(初始化每个key的value为0):
#target_dic = {one:0 for one in list} #target_dic = dict.fromkeys(list, 0)
例如min()可以根据key也可以不用,不用key的话语句就会更短一些:
import re,collections the_log = "CRIUCEXPLORESGOUIUSCRIUdSCdRIdUdddS" target = "CRIUS" print min(collections.Counter(re.findall('['+target+']', the_log)).items(), key=lambda x: x[1])[1] #print min(collections.Counter(re.findall('['+target+']', the_log)).values())
如果测试字符串“CRIUCEXPLORESGOUIUSCRIUdSCdRIdUdddS”自备的话,两行搞定:
import re,collections print min(collections.Counter(re.findall('[CRIUS]', raw_input("Input:"))).values())
原来还有import内置函数!现在就一行了:
print min(__import__('collections').Counter(__import__('re').findall('[CRIUS]', raw_input("Input:"))).values())
是不是特别好玩!O(∩_∩)O哈哈哈~
相关文章推荐
- 由一道面试题引发的 HttpModule,HttpHandler与IHttpAsyncHandler 详解
- 一道面试题引发的讨论
- 一道面试题引发的面壁:认识JavaScript的settimeout和异步
- 一道面试题引发的思考
- 由一道面试题引发的“血案”(静态变量,虚函数,构造/析构函数调用顺序等)
- 由一道面试题引发的思考
- 一道面试题引发的思考
- 一道360面试题引发的思考
- 一道面试题引发的思考
- 一道面试题引发的问题:浮点数和整数在计算机种的存储方式
- 关于一道面试题的解答(华为公司python面试题,要求10分钟写出代码)
- 一道面试题引发的有关随机数的思考(1)
- 一道面试题引发的有关随机数的思考(6)
- JAVA学习提高之---- 一道面试题引发的思考之:类的初始化
- 由一道腾讯面试题引发对于关联数组的思考
- 一道面试题引发的思考
- 一道面试题引发的有关随机数的思考(4)
- 一道面试题引发的有关随机数的思考(8)
- c++类的成员函数存储方式(是否属于类的对象)---一道面试题引发的思考
- 2015百度一道面试题引发的思考(shell脚本和网络)