要從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中文網其他相關文章!