在python中如何有效的比较两个无序的列表是否包含完全同样的元素(不是set)?
生活随笔
收集整理的這篇文章主要介紹了
在python中如何有效的比较两个无序的列表是否包含完全同样的元素(不是set)?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
問:
a = [1, 2, 3, 1, 2, 3] b = [3, 2, 1, 3, 2, 1]我們需要判斷a和b是相等的,因為他們有同樣的元素,盡管他們的順序不同。
但是實際情況是,list會按照順序比對內部元素,該如何解決?
答:
O(n)復雜度: 如果內部的對象是可hash的,那么Collections下的Counter方法是最好的。
O(nlogn)復雜度:如果對象可以排序,那么sorted()方法是次優的。
def compare(s, t):return sorted(s) == sorted(t)O(n*n)復雜度:如果對象既不可以hash又無法排序,我們可以使用以下方法:
''' 遇到問題沒人解答?小編創建了一個Python學習交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學習教程和PDF電子書! ''' def compare(s, t):t = list(t) # make a mutable copytry:for elem in s:t.remove(elem)except ValueError:return Falsereturn not t 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的在python中如何有效的比较两个无序的列表是否包含完全同样的元素(不是set)?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python:如何将字典值写入一个文本文
- 下一篇: python技巧:拆分多层嵌套列表