一道面试题引发的pythonic

简介: [本文出自天外归云的博客园] 今天一个朋友去面试,下面是一道测试工程师面试题(来自搜狗): 自己写了解法: # -*- coding: utf-8 -*- import re def filter_log(target,the_log): r = '['+target...

[本文出自天外归云的博客园]

今天一个朋友去面试,下面是一道测试工程师面试题(来自搜狗):

自己写了解法:

# -*- 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哈哈哈~

相关文章
|
2天前
|
Python
Python函数式编程思想与面试实战
【4月更文挑战第14天】Python函数式编程涉及纯函数、高阶函数、匿名函数等概念,能提高代码可读性和并发性。本文探讨其核心理念,分析面试常见问题,如纯函数副作用、高阶函数使用、lambda过度使用等,并提供应对策略。理解并熟练应用函数式编程,对于面试表现和技术提升至关重要。
9 0
|
3月前
|
存储 算法 Java
Python编程面试题及答案(20例)
Python编程面试题及答案(20例)
21 1
|
11月前
|
Python
Python 如何让自己的代码更有逼格 pythonic
Python 如何让自己的代码更有逼格 pythonic
60 0
|
12月前
|
存储 缓存 前端开发
《剑指offer—面试篇》-python面试经典100题(上)
《剑指offer—面试篇》-python面试经典100题(上)
66 0
|
存储 自然语言处理 算法
刚学完c没掌握完的知识,不会学c++的时候还没搞懂吧?
c++既可用于基于过程的结构化程序设计,又可用于面向对象的程序设计,是一个功能强大的混合型程序设计语言。
103 0
刚学完c没掌握完的知识,不会学c++的时候还没搞懂吧?
|
Python 容器
吃透Python函数进阶嵌套等知识点
吃透Python函数进阶嵌套等知识点
|
前端开发
|
前端开发 Python
关于Python的前后、单双下划线作用,看完这篇文章吊打面试官!
在Python中,可能最常见的就是各种常量、变量、函数、方法前后添加的那些下划线了。有前面加的、后面加的,加一个的,加两个的,看到头晕。那么,你对这些知识都掌握了吗 ?让我们先来做一个自测吧。
246 0
|
Java Python
Python面试1-25题汇总,都是常问的面试题!
国庆期间,Python面试题每日一题暂停更新,下面把最近整理的25篇Python面试文整理一下,平时文章都放在比较末尾,阅读量都不高,相信很多人都没看过,如果对于Python感兴趣的,建议可以认真阅读一下!
204 0
|
IDE 开发工具 Python
学了这么久的Python,这些知识点都掌握了吗?
了解python的起源,python2和python3的区别 1、这里主要简单了解一下python2和python3的区别,比如print打印函数的用法就不一样,在python2里面直接print 'hello world'就可以,但是在python3里面,print变成了一个函数,要使用print("hello world")才可以打印。 2、python3里面对中文的支持比较友好,对字符的编码转换也更方便 3、对除法运算的运算符有调整 4、一些模块命名调整等
学了这么久的Python,这些知识点都掌握了吗?