【发布时间】:2016-10-22 18:53:42
【问题描述】:
假设我有一个列表:
l = ['a', 'b', 'c', 'd', 'e', 'f', 'e']
如您所见,索引 4 和 6 是重复的。我的问题是:查看列表中是否有重复内容的最有效方法是什么?
选项 1:
output = len(set(l)) != len(l):
如果输出为假,则其中存在不止一次的值。
选项 2:
output = True
for i in l:
if l.count(i) > 1:
output = False
如果输出为假,则其中存在不止一次的值。
问题:
最最有效的方法是什么?
如何计算这两个(或更多?)选项的 O 表示法?
谢谢!
【问题讨论】:
-
这不是重复的,因为该问题询问“什么是最好的方式(最好是传统方式)”并且所选答案指出“不是最有效的,但直截了当和简洁” -这个问题是最有效的方法。 @米奇
-
1.对于典型的数据类型,选项 1 在常数因子下是最优的; 2.看起来像你的家庭作业,请拿出你自己的考虑
-
1 在我看来像 O(n),而 2 像 O(n^2)
-
看看你目前对这个问题的 5 个答案 - 没有一个答案可以证明他们的答案是最快的,而且他们几乎都可以可以在链接的副本中找到。最好的办法是根据您使用的任何大小列表自行对它们进行基准测试,然后得出自己的结论。
-
将其关闭为另一个帖子的欺骗。正如@Mitch 所说,如果您想要最好的,那么您当然需要进行基准测试。否则,这个问题将变成一个有意见的问题,其中每个回答者都会试图争辩说他们的答案是最好的。
标签: python list python-2.7