最快的:
def f7(seq): seen = set() seen_add = seen.add return [x for x in seq if not (x in seen or seen_add(x))]
为什么要分配
seen.add给
seen_add而不是仅打电话给
seen.add?Python是一种动态语言,与解决
seen.add局部变量相比,解决每次迭代的成本更高。
seen.add可能在两次迭代之间发生了变化,并且运行时不够智能,无法排除这种情况。为了安全起见,它必须每次检查对象。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)