字典和集合都在Python中实现为哈希表,插入时间和查找时间为O(1)。我正在编写一个程序来计算字符串是否包含所有唯一字符,并且我使用一个集来跟踪到目前为止看到的所有字符。我观察到的是,如果我使用字典而不是集合,程序的整体运行时间会快一些。有人可以解释一下这个原因吗?
代码使用字典:
def TestUniqueCharacters(characters):
chars = {}
for character in characters:
if character not in chars:
chars[character] = 1
else:
return False
return True
for i in range(30000000):
TestUniqueCharacters("qwertyuiopasdfghjklzxcvbnm1234567890-=[];',.!@#$%^&*()")
代码使用集合
def TestUniqueCharacters(characters):
chars = set()
for character in characters:
if character not in chars:
chars.add(character)
else:
return False
return True
for i in range(30000000):
TestUniqueCharacters("qwertyuiopasdfghjklzxcvbnm1234567890-=[];',.!@#$%^&*()")
用字典执行时间
设定的执行时间
设定的执行时间
建议改变:
chars = set()
for character in characters:
if character not in chars:
chars.add(character)
至:
chars = set()
charsadd = chars.add # new line here
for character in characters:
if character not in chars:
charsadd(character) # this line is different - no method lookup now
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。