程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Python >> python集合類型實例

python集合類型實例

編輯:Python

有兩個多行文件,其中一個包含另一個文件內容,現在的需求是要從大的文件裡去掉包含行,問怎麼破,這是今天一個技術群裡有人問的問題,實現這個有其實有很多方法,我先給一個shell的解決方法,我們假設fileone.txt文件包含filetwo.txt內容,shell方法如下:

#!/bin/sh

for i in `cat  fileone.txt`

do

if ! grep $i filetwo.txt >/dev/null 2>&1

then

echo $i >>newfile.txt

fi

done

這樣後生成的文件就去掉了filetwo.txt的包含的行,那如果要求兩個文件都包含的行呢,那就在寫一個腳本,如何要合並兩個文件,而且要不能有重復行呢,那就再寫一個腳本,發現隨著需求變化,你不知不覺就整了好幾個腳本,所以在實際工作中需求是多樣的,其實上面說的內容,大家也應該感到熟悉,以上的操作其實就是我們高中學的集合的概念,說到集合,那python裡本身就帶集合的數據類型,可以對集合的數據類型直接操作,那接下來我們來看看如果用python來實現以上的需求:

python集合類型實例
python集合類型實例
 

#!/usr/bin/evn python

def genset(fname):

    flist = []

fi = open(fname)

for line in fi:

line = line.strip()

flist.append(line)

fi.close()

return set(flist)

 

if __name__ == '__main__':

s1 = genset('fileone.txt')

s2 = genset('filetwo.txt')

s3 = s1 - s2

fi = open('newfile.txt','a+')

for li in list(s3):

fi.write(li + '\n')

fi.close()

在python裡集合的類型的這麼使用的,假設我們有集合s和t,基本操作如下:

1、聯合(|),合並s和t形成一個新的集合,新集合的每個元素都屬於s,t的集合的其中之一成員。

2、交接(&),這個很容易理解,就是兩個圓相交的部分,屬於共同擁有的。

3、差補(-),這就是我們例子中用到的,s-t 後的形成的新集合只屬於s而不屬於t,這樣就在s中有t的給去掉了。

4、對稱差分(^),這個形成新的集合成員要麼屬於s,要麼屬於t,但不能同時屬於s和t.

熟練掌握了集合類型大家就可以在工作中靈活運用。

文章出處——python運維技術微信公眾號

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved