【发布时间】:2015-08-17 11:34:25
【问题描述】:
我正在解决一些竞争性的编码挑战。我的解决方案是在列表中搜索时超出时间限制,但在我搜索字符串时被接受。
下面是示例代码:
代码
import timeit
list = timeit.Timer("'A' in list('AEIOU')")
set = timeit.Timer("'A' in set('AEIOU')")
string = timeit.Timer("'A' in 'AEIOU'")
print 'List search :',list.timeit(999999)
print 'Set search',set.timeit(999999)
print 'String search',string.timeit(999999)
输出
List search : 1.0873670578
Set search 1.0083398819
String search 0.0997061729431
*此输出是在 ideone.com 中获得的...http://ideone.com/5FxkX2
**输出可能因系统而异,但趋势相同。
我发现字符串搜索速度非常快。我用谷歌搜索,但没有找到令人满意的理由。请帮助我理解为什么字符串搜索最快?
【问题讨论】:
-
实际上,检查
set的成员身份比列表和字符串要快,因为使用哈希表并且它 O(1),但您在这里看到的不同之处在于将字符串转换为设置并列出。所以试试{'A', 'I', 'E', 'U', 'O'}和['A', 'I', 'E', 'U', 'O'] -
因为您的示例集非常小,所以
O(1)的set相对于O(N)的其他优势并不重要。无论如何,设置(set和list的创建)是O(N)。搜索字符串比list更快,因为它是一个更简单的结构(它包含一个字符数组而不是对字符串对象的引用)。
标签: python string python-2.7