Python中如何最快的删除一个list中重复的值同时保证原有顺序【面试题详解】

今天爱分享给大家带来Python中如何最快的删除一个list中重复的值同时保证原有顺序【面试题详解】,希望能够帮助到大家。


def f7(seq):
    seen = set()
    seen_add = seen.add
    return [ x for x in seq if x not in seen and not seen_add(x)]

为什么要建立一个到seen.add函数的引用seen_add,而不是直接调用seen.add()呢?Python是一个动态语言,如果使用seen.add(),迭代器每次都要解析seen.add()函数,相比直接调用一个局部变量seen_add会消耗更多资源。(评论问,为什么迭代器每次都要解析seen.add())seen.add()可能会在每次迭代中可能会发生变化,而Python的Runtime没有智能到发现这一变化,因此安全起见,每次迭代过程中,迭代器都会重新检查这一对象。

人已赞赏
Python

Python中获取列表的最后一个元素【面试题详解】

2020-12-27 16:37:11

Python

Python中如何在遍历一个list时删除某些元素【面试题详解】

2020-12-27 16:40:08

'); })();