The beauty of python 1
https://blog.csdn.net/dengyaolongacmblog/article/details/38016905
置顶 2014年07月21日 15:28:18 yaolongdeng 阅读数:2189 标签: python 更多
个人分类: Python
写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!!