一、相等比較
1.1 同順序列表比較
順序相同直接用“==”進行比較即可
list1 = ["one","two","three"] list2 = ["one","two","three"] list1 == list2
2.1 不同順序列表進行比較
“==”只有成員、成員位置都相同時才返回True,但有時候我們希望只要成員相同、即使成員位置不同也能返回True。
2.1.1 使用列表sort()方法進行排序后比較
列表本身有sort()內置方法,可對自身成員進行排序;注意sort()方法對自身造成改變。
list1 = ["one","two","three"] list2 = ["one","three","two"] list1.sort() == list2.sort() print(list1)
2.1.2 使用sorted()方法進行排序后比較
上一小節介紹的sort()方法會對列表成員進行重排,但有時候我們並不希望列表本身被改動。
我們可以用一下變量將原先的列表保存起來,但更好的做法是使用sorted()方法,sorted()不改變列表原本順序而是新生成一個排序后的列表並返回。
list1 = ["one","two","three"] list2 = ["one","three","two"] sorted(list1) == sorted(list2) print(list1) sorted(list1)
二、包含比較
直接用列表本身進行包含類比較,只能用遍歷的方法這是比較麻煩的,使用set()轉成集合進行包含比較就簡單多了。
2.1 判斷列表是否包含另一列表
list1 = ["one","two","three"] list2 = ["one","three","two","four"] set(list1).issubset(set(list2)) set(list2).issuperset(set(list1))
2.2 獲取兩個列表相同成員(交集)
list1 = ["one","two","three","five"] list2 = ["one","three","two","four"] set(list1).intersection(set(list2))
2.3 獲取兩個列表不同成員
list1 = ["one","two","three","five"] list2 = ["one","three","two","four"] set(list1).symmetric_difference(set(list2))
2.4 獲取一個列表中不是另一個列表成員的成員(差集)
list1 = ["one","two","three","five"] list2 = ["one","three","two","four"] set(list1).difference(set(list2)) set(list2).difference(set(list1))
2.5 獲取兩個列表所有成員(並集)
list1 = ["one","two","three","five"] list2 = ["one","three","two","four"] set(list1).union(set(list2))
參考:
https://stackoverflow.com/questions/9623114/check-if-two-unordered-lists-are-equal
https://stackoverflow.com/questions/3847386/testing-if-a-list-contains-another-list-with-python