今天去笔试个java职位,要求写个统计不同词的出现次数,我java写不出来,写了几句py代码上去。
回来后,在群上讨论了一下,写了以下三个方法,前两种我写的,最后一种是别人写的
三种方法用时的比较:
0.405999898911
--------------------------------
1.32800006866
--------------------------------
0.905999898911
import random
import time
def make_case (n):
library = ['aa','bb','cc','ee','dd','ff','gg','hello','google','world','ibm','facebook','sex','girl','program']
#library = ['aa','bb','cc']
result = []
word_len = len(library)-1
for i in range(n):
result.append(library[random.randint(0,word_len)])
return result
def wc1(ss):
result = {}
for i in ss:
try:
result[i] += 1
except:
result[i] = 1
#for i in result:
#print i,result[i]
def wc2(ss):
ss.sort()
num = 1
prev = 0
for i in range(1,len(ss)):
if ss[prev] == ss[i]:
num += 1
else:
# print ss[prev],num
num = 1
prev = i
#print ss[prev],num
def wc3(ss):
temp = set(ss)
for i in temp:
#print i,ss.count(i)
tem = ss.count(i)
def write_line():
print '-----------------------------------'
def test():
temp = make_case(1000000)
t1 = time.time()
wc1(temp)
print time.time()-t1
write_line()
t2 = time.time()
wc2(temp)
print time.time()-t2
write_line()
t3 = time.time()
wc3(temp)
print time.time()-t3
if __name__ == "__main__":
test()