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!!



  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
《计算机科学中的数学之美》是一本探讨数学在计算机科学中的重要性和应用的书籍。数学在计算机科学领域中具有深远的影响和价值。这本书通过几个方面展示了数学的美妙之处。 首先,数学是计算机科学的基础。计算机科学的许多概念和算法都是基于数学原理和公式建立的。例如,计算机图形学中的三维坐标转换和曲线插值等技术都依赖于线性代数和微积分等数学工具。数学为计算机科学提供了必要的工具和方法论,使得我们能够更好地理解和分析计算机系统。 其次,数学在计算机科学中具有普适性。无论是数据结构、算法设计还是机器学习等领域,都离不开数学模型和推导。数学提供了一种精确、严密的思维方式,能够帮助我们解决复杂的计算问题。例如,在算法设计中,我们可以运用图论、排列组合等数学工具来分析算法的时间复杂度和空间复杂度,从而评估算法的效率和可行性。 此外,数学的美妙之处还体现在其抽象性和创造性上。数学是一门高度抽象的学科,通过建立抽象的数学模型,我们可以捕捉和描述现实世界中的复杂现象。在计算机科学中,我们经常需要将现实问题抽象成数学模型,再利用数学的方法来解决。数学的创造性则体现在其能够产生新的数学概念和定理,为计算机科学领域提供新的思想和方法。 综上所述,《计算机科学中的数学之美》展示了数学的美妙之处。数学作为计算机科学的基础、普适性工具和创造性思维方式,为我们理解、分析和解决计算机科学中的问题提供了重要的支持。这本书将帮助读者更好地认识数学在计算机科学中的价值和应用。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值