Python3列表(list)比較操作教程


一、相等比較

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

http://www.runoob.com/python3/python3-set.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM