歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Python中利用set去除列表(list)重復元素

Python中利用set去除列表(list)重復元素

日期:2017/3/1 10:21:41   编辑:Linux編程
Python的set類型和其他語言類似,是一個無序不重復元素集,基本功能包括關系測試和消除重復元素。

如果我們要處理一些數據,需要去除掉重復元素,比如列表a = [5, 2, 5, 1, 4, 3, 4],可以用如下方式實現

  1. a = [5, 2, 5, 1, 4, 3, 4]
  2. print list(set(a))

Python中set集合對象還支持union(聯合[|])、intersection(交[&])、difference(差[-])和sysmmetric difference(對稱差集^)等數學運算。如下:

  1. a = set('abracadabra')
  2. b = set('alacazam')
  3. # a包含且b包含的字符
  4. print a & b
  5. print a.intersection(b)
  6. # a包含或b包含的字符
  7. print a | b
  8. print a.union(b)
  9. # a包含且b不包含的字符
  10. print a - b
  11. print a.difference(b)
  12. # a包含且b不包含的字符和b包含且a不包含的字符
  13. print a ^ b
  14. print a.symmetric_difference(b)

當然,Python中關於set的操作類型還有很多,這裡就不一一列舉了。如果一個文本中有重復的元素,我們應該如何去除呢,文本內容如下:

  1. [root@linuxidc ]# cat done.txt
  2. linuxidc
  3. linuxidc
  4. linuxidc
  5. http://www.linuxidc.com/
  6. http://www.linuxidc.com/

Python利用set去除重復元素的方式,如下:

  1. In [1]: print '\n'.join(set(open('done.txt').read().split('\n')))
  2. linuxidc
  3. http://www.linuxidc.com/
  4. In [2]: print ''.join(set([x for x in open('done.txt').readlines() if x.strip()!='']))
  5. linuxidc
  6. http:///www.linuxidc.com/
Copyright © Linux教程網 All Rights Reserved