The beauty of python 1

写python已经差不多有三个多月了,因为简洁,越来越喜欢这个"巨莽"了,我相信绝大多数人同样喜欢简洁。

今天第一次记录,是我刚刚再工作上遇到的一个小问题,为了更方便理解,我把问题概括成这样:

我有三百多万条记录,但是里面有重复(里面由数字和数字组成),我想要得到不重复的数据。

这是一个老问题,用c++的话很自然就会用到set,大概写法就是

#include<iostream>
#include<set>
#include<string>
#include<cstdio>
using namespace std;

int main(){
    freopen("record.txt","r",stdin);
    freopen("uniquerec.txt","w",stdout);
    set<string> st;
    string mstr;
    while(cin>>mstr){
       st.insert(mstr);
    }
    for(set<string>::iterator itr=st.begin();itr!=st.end();itr++){
        cout<<*itr<<endl;
    }
    fclose(stdin);
    fclose(stdout);
   
}

而用python,则是这样的

#!/usr/bin/env python
# coding=utf-8
rec=open('record1.txt','r').readlines()
uniquerec=open('unique.txt','w')
st=set(rec)
uniquerec.write(''.join(st))

怎么样?是不是让人十分喜欢?短短几行,包括了读写文件,过滤重复!

为了让不熟悉py的同学明白,我简单说一下用到的。

读写文件就是open(‘文件名字‘,参数[r为读,w为写,a为追加]‘)

用readlines()会返回一个列表

而利用列表lst创建集合则只需要

st=set(lst)

而‘字符串‘.join是十分好用的连接,利用字符串来连接容器内的元素,我用的是空字符,就是直接串连起来。

之后,因为我的文档分开了两个存储,所以需要求并运算。py只需要这么做。

#!/usr/bin/env python
# coding=utf-8
rec=open('record1.txt','r').readlines()
rec2=open('record2.txt','r').readlines()
uniquerec=open('unique.txt','w')
st=set(rec)|set(rec2)
uniquerec.write(''.join(st))

没错,就是 | 用于求并,同理&则是求交 ,-是求差,^是求补。

python的简洁和高效你感受到了吗?

人生苦短,我用python!!



The beauty of python 1

上一篇:C++ delete a node from BST


下一篇:Objective-C/C++混编编译器设置