在python中如何有效的比较两个无序的列表是否包含完全同样的元素(不是set)?
生活随笔
收集整理的這篇文章主要介紹了
在python中如何有效的比较两个无序的列表是否包含完全同样的元素(不是set)?
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
問:
a = [1, 2, 3, 1, 2, 3] b = [3, 2, 1, 3, 2, 1]我們需要判斷a和b是相等的,因?yàn)樗麄冇型瑯拥脑?#xff0c;盡管他們的順序不同。
但是實(shí)際情況是,list會按照順序比對內(nèi)部元素,該如何解決?
答:
O(n)復(fù)雜度: 如果內(nèi)部的對象是可hash的,那么Collections下的Counter方法是最好的。
O(nlogn)復(fù)雜度:如果對象可以排序,那么sorted()方法是次優(yōu)的。
def compare(s, t):return sorted(s) == sorted(t)O(n*n)復(fù)雜度:如果對象既不可以hash又無法排序,我們可以使用以下方法:
''' 遇到問題沒人解答?小編創(chuàng)建了一個Python學(xué)習(xí)交流QQ群:778463939 尋找有志同道合的小伙伴,互幫互助,群里還有不錯的視頻學(xué)習(xí)教程和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位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的在python中如何有效的比较两个无序的列表是否包含完全同样的元素(不是set)?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python:如何将字典值写入一个文本文
- 下一篇: websocket python爬虫_p