Python實現刪除列表中滿足一定條件的元素示例(轉)
阿新 • • 發佈:2019-01-22
http://www.jb51.net/article/115953.htm
本文例項講述了Python實現刪除列表中滿足一定條件的元素。分享給大家供大家參考,具體如下:
從列表中刪除滿足一定條件的元素。
如:刪除一個列表中長度為0的元素,或者刪除列表中同時是2和3的倍數的元素。
做過高階語言程式設計的人想當然的會認為“這很簡單”,可以如下面的方式來實現:
?123 | for i in listObj: if (...): listObj.remove(i) |
看下一個小例子和結果:
?12345 | a = [ 1 , 2 , 3 , 12 , 12 , 5 , 6 , 8 , 9 ] for i in a: if i % 2 = = 0 and i % 3 = = 0 : a.remove(i) print (a) |
執行結果:
?12 | E:\Program\Python>d.py [ 1 , 2 , 3 , 12 , 5 , 8 , 9 ] |
看到了嗎?12竟然沒有被刪除!!!(這是Python列表操作的一個非常容易出錯的地方)
要實現預期的目標,其實還是有不少變通方法的,比如:
?1234567 | a = [ 1 , 2 , 3 , 12 , 12 , 5 , 6 , 8 , 9 ] b = a[:] for i in a: if i % 2 = = 0 and i % 3 = = 0 : b.remove(i) a = b print (a) |
執行結果:
?12 | E:\Program\Python>d.py [ 1 , 2 , 3 , 5 , 8 , 9 ] |
看看,現在達到預期的目標了吧。從上面的程式碼不難發現,我們構建了列表b,複製了列表a中的所有元素,通過遍歷a來刪除b中的元素,最後把a指向b。
我還發現了另一種方法,自認為挺不錯的——列表推導式
?123456 | a = [ 'what' , ' ', ' ', ' some ', ' ', ' time'] a = [i for i in a if len (i) > 0 ] print (a) b = [ 1 , 2 , 3 , 12 , 12 , 5 , 6 , 8 , 9 ] b = [i for i in b if not (i % 3 = = 0 and i % 2 = = 0 )] print (b) |
執行結果:
?123 | E:\Program\Python>d.py [ 'what' , 'some' , 'time' ] [ 1 , 2 , 3 , 5 , 8 , 9 ] |