python集合类型实例

有两个多行文件,其中一个包含另外一个文件内容,如今的需求是要从大的文件里去掉包含行,问怎么破,这是今天一个技术群里有人问的问题,实现这个有其实有不少方法,我先给一个shell的解决方法,咱们假设fileone.txt文件包含filetwo.txt内容,shell方法以下:python

#!/bin/shshell

 

for i in `cat  fileone.txt`app

doide

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

  thenorm

     echo $i >>newfile.txtip

  fici

doneit

这样后生成的文件就去掉了filetwo.txt的包含的行,那若是要求两个文件都包含的行呢,那就在写一个脚本,如何要合并两个文件,并且要不能有重复行呢,那就再写一个脚本,发现随着需求变化,你不知不觉就整了好几个脚本,因此在实际工做中需求是多样的,其实上面说的内容,你们也应该感到熟悉,以上的操做其实就是咱们高中学的集合的概念,说到集合,那python里自己就带集合的数据类型,能够对集合的数据类型直接操做,那接下来咱们来看看若是用python来实现以上的需求:form

#!/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,基本操做以下:

一、联合(|),合并s和t造成一个新的集合,新集合的每一个元素都属于s,t的集合的其中之一成员。

二、交接(&),这个很容易理解,就是两个圆相交的部分,属于共同拥有的。

三、差补(-),这就是咱们例子中用到的,s-t 后的造成的新集合只属于s而不属于t,这样就在s中有t的给去掉了。

四、对称差分(^),这个造成新的集合成员要么属于s,要么属于t,但不能同时属于s和t.

熟练掌握了集合类型你们就能够在工做中灵活运用。

相关文章
相关标签/搜索