python中issubset是什么_Python issubset性能与在s中查找元素的比较
我已经测试了以下方法:import random
import string
def checkWord1(word):
r1 = 'qwertyuiop'
r2 = 'asdfghjkl'
r3 = 'zxcvbnm'
row = 0
for idx, ch in enumerate(word):
if idx == 0:
row = 1 if ch in r1 else 2 if ch in r2 else 3
continue
coming_row = 1 if ch in r1 else 2 if ch in r2 else 3
if row != coming_row:
return False
return True
def checkWord2(word):
r1 = 'qwertyuiop'
r2 = 'asdfghjkl'
r3 = 'zxcvbnm'
return set(word).issubset(r1) or set(word).issubset(r2) or set(word).issubset(r3)
def checkWord3(word):
r1 = 'qwertyuiop'
r2 = 'asdfghjkl'
r3 = 'zxcvbnm'
r = set(word)
return r.issubset(r1) or r.issubset(r2) or r.issubset(r3)
def checkWord4(word):
r1 = set('qwertyuiop')
r2 = set('asdfghjkl')
r3 = set('zxcvbnm')
row = 0
for idx, ch in enumerate(word):
if idx == 0:
row = 1 if ch in r1 else 2 if ch in r2 else 3
continue
coming_row = 1 if ch in r1 else 2 if ch in r2 else 3
if row != coming_row:
return False
return True
测量执行时间:
^{pr2}$
获取结果:
^{pr3}$
尽管随机生成的字符串不同,但结果相似。
一个是最快的,三个比两个更快,更稳定,四个最差。
我认为为什么一个人跑得最快的原因是^{cd1>}实际上隐式地将^{cd2>}转换为^{cd3>}。那代价很高。
这种比较不公平。假设我们有一个单词^{cd4>},在方法一中,它将检查在^{{cd5>}中,在下面的循环中,如果没有找到^{{cd5>}的子集,也不可能是其他子集。
所以我实现了一个更快的方法,我想我们可以只关注一行,这是由第一个字符决定的,因为这三行是独占的,这样我们就不再检查其他行了。
^{pr4}$
获取结果:One:
728 ns ± 236 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
Two:
2.08 µs ± 55.8 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
Three:
1.43 µs ± 60 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
Four:
1.45 µs ± 7.74 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
Five:
374 ns ± 7.01 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
