要从Python列表中删除重复元素,您可以使用几种方法。一种常见而直接的方法是将列表转换为集合,然后返回列表。您可以做到这一点:
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] deduplicated_list = list(set(original_list)) print(deduplicated_list) # Output: [1, 2, 3, 4, 5]</code>
但是,此方法不能保留原始元素顺序。如果订单保存不是问题,那么这是一种简单有效的方法。
从时间复杂性方面,消除Python列表中的重复项的最有效方法是使用集合。 Python中的集合具有添加和检查成员资格的O(1)的平均时间复杂性,从而使其在重复数据删除任务中效率高。上面使用set()
和list()
描述的方法如下:
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] deduplicated_list = list(set(original_list))</code>
这种方法是有效的,但不能保留要素的顺序。如果保留订单很重要,则需要使用另一种方法,这可能效率较低,但仍然很快。
是的,您可以保留元素的顺序,同时从Python的列表中删除重复项。实现这一目标的一种方法是使用一组列表理解,以跟踪可见元素:
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] seen = set() deduplicated_list = [x for x in original_list if not (x in seen or seen.add(x))] print(deduplicated_list) # Output: [1, 2, 3, 4, 5]</code>
此方法一次在列表中迭代,检查并添加元素到seen
集合。如果以前没有看到元素,则将其包含在新列表中,以确保保持原始订单。
在Python中,有几种方法可以重复描述列表,每种方法都在效率,订单保存和可读性方面都有自己的权衡。这是一些常见方法:
使用集合(无订单保存):
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] deduplicated_list = list(set(original_list))</code>
权衡: O(n)时间复杂性高效,但不能保留原始元素的顺序。
用一组列表理解(保留订单):
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] seen = set() deduplicated_list = [x for x in original_list if not (x in seen or seen.add(x))]</code>
权衡:保留元素的顺序,并且与O(n)时间复杂性相对效率相对较高,但可能比设定方法较不可读,效率略低。
使用dict.fromkeys()
(在Python 3.7中保存的顺序):
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] deduplicated_list = list(dict.fromkeys(original_list))</code>
权衡:由于引入了插入命令的词典,因此在Python 3.7中保存订单。这是有效而简洁的,但是仅在较新的Python版本中保证了订单保存。
使用循环(保留顺序):
<code class="python">original_list = [1, 2, 2, 3, 4, 4, 5] deduplicated_list = [] for item in original_list: if item not in deduplicated_list: deduplicated_list.append(item)</code>
权衡:保留订单,并且可以直接理解,但由于反复的会员测试,尤其是对于大型列表而言,效率也不太效率。
每种方法都具有其用例,具体取决于您优先考虑效率,订单保存还是代码可读性。
以上是如何从Python列表中删除重复元素?的详细内容。更多信息请关注PHP中文网其他相关文章!