【发布时间】:2014-08-22 02:03:12
【问题描述】:
我有两个系列,我需要找出这两个系列是否有任何共同点,以及它们的用途是什么。 我可以使用列表和 for 和 if 或设置并找到交集来做到这一点。 但我还需要尽量减少运行时间。
这两种方法中哪一种更省时? 注意:秒数的差异也很重要。
编辑: 我所说的集合是价值的集合。例如从 csv 读取。我可以将它们放在列表中或设置为进一步操作。 例子: a = ['D','C','B','A'] b = ['A','B',E',Z','N','W']
现在我可以通过以下方式做到吗?
common=[]
for item in a:
if item not in b:
common.append(item)
使用列表理解
common=[item for item in a if item not in b]
使用集合
set(a) & set(b)
我无法在 linux 中使用 just time 命令,因为它因系统而异
【问题讨论】:
-
什么是集合?你的意思是
collections模块的某个成员?您如何使用列表、for 和 if 或集合来实现?请显示一些代码。 -
两者都实现。措施。这就是你的答案。
-
对 100,000 个左右的元素同时实现,看看会发生什么。
-
我不明白关于时间“因系统而异”的评论。系统之间是否不一致也没关系,您只需要在一个系统上进行测量,找出哪种方法更快。
-
假设 a 和 b 都是集合,那么中间的应该更好,因为它将在 C 中完成。如果 a 和 b 是具有相当多元素的列表,则 "set(a ) & set(b)" 应该更快。否则,这是中间和最后一个之间的折腾,第一个机会很小。实际上,正如其他人所提到的那样,如果您担心它,最好只是时间或分析它。
标签: python list data-structures set