一道面試題引發的pythonic

2021-09-07 09:48:26 字數 1724 閱讀 9697

[本文出自天外歸雲的]

今天乙個朋友去面試,下面是一道測試工程師面試題(來自搜狗):

自己寫了解法:

#

-*- coding: utf-8 -*-

import

redef

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 =

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

一道面試題引發的思考

首先我們給出這道面試題的 以及題目 lista new arraylist list.add 1 list.add 2 for string item list 問 上段 執行會報錯嗎?如果把 1 換成 2 會報錯嗎?為什麼?首先給出答案 上面這段 執行不會報錯。把 1 換成 2 再執行就會報錯。為...

一道面試題引發的思考

好的面試官能夠能好的和面試者互動,而一場好的面試也能帶給面試者更多的思考 面試官給我出題後的 1 分鐘內,我給出了第一種思路 排序。將數字按公升序排序,去除最小的那個數即可。存在問題 時間複雜度高,只考慮了正數的情況。面試官給出了第一次提示時間複雜度過高,要求降低時間複雜度。於是在經過幾分鐘思考後,...

一道面試題引發的pythonic

本文出自天外歸雲的 今天乙個朋友去面試,下面是一道測試工程師面試題 來自搜狗 自己寫了解法 coding utf 8 import redef filter log target,the log r target target dic for one in target target dic one...