Python奇技淫巧

人生苦短,我用Python;

编程界这绝对不是一句空话,尤其是对于使用过多个语言进行工作的同学们来说,用Python的时间越长,越有一种我早干嘛去了的想法,没事,啥时候用Python都不晚,这篇分享主要集中在各种Python的经典用法、有趣的彩蛋等等,目的只有一个,让大家感受到Python的魅力;

这篇分享计划是持续更新的,所以大家可以关注我或者收藏这篇帖子,会不定期更新,大家的脑洞黑操作也可以在评论区给出哈,说的有道理的我会更新到帖子中,现在开始正题;

Python与我

最早使用Python是16年,当时工作主要是Android开发,负责导航部分,当时经常会在调试功能时展示路网数据、导航位置数据等,但是这样调试成本是比较大的,首先APP每次都要运行,其次就是导航需要一个过程,且无法很好的略过(模拟导航与实际导航还是有差异的),因此经过老大建议开始学习Python,最初目的是通过Python结合Matplotlib绘制路网数据并可视化,从此一发不可收拾,到现在,基本任何一件过于重复性的工作,基本都会通过脚本完成,比如最近的一次是在5w个文件中通过一个csv文件中的数据提取出其中的3w个,当然实现的办法很多,但是不得不说,Python 5行代码搞定真的很爽,这就是我跟Python的故事,当然了,开始做机器学习方面的项目后,用Python就更多了,这些就不太属于本文要分享的部分了;

正文

First blood

第一个点我想了很久,因为Python值得称道的实在是太多了,但是哪个才是那个最具有代表性的呢,它不一定是最炫酷的,不一定是最简短的,这里我选择列表推导式,第一次看到时惊为天人,超短的代码,冷艳的外表,强大的内在,确实很厉害,反正我现在一想到Python脑子里第一条就是它,一家之言哈,大家也可以分享下自己脑子里Python的第一个特点是啥;

代码:

	#计算抛1000枚硬币得到正面的概率
sum([int(round(random())) for x in range(1000)])/1000.
#根据中心极限定理,这个值随着次数的增加会愈加集中到理论值0.5附近

看看,真的很爽,虽然项目中不建议这么用,但是用在脚本中时候,那还不是自己说了算,脚本嘛,爽就得了呗对吧(PS:注意最后一个1000后面跟着一个.表示小数哈,不然结果就为0了,这里我用的是Python2.7);

第二回

需求:有多个条件,或者说bool型变量,目的是判断其中全部为真、只要有一个为真这两种情况,其他语言大概率需要用到循环,而Python是如何处理的呢?

代码:

	x = [True, True, False]
if any(x):
print '至少一个为真'
if all(x):
print '全部为真'
if any(x) and not all(x):
print '至少一个为真、一个为假'

这回不仅仅清爽,而且可读性还很强,这就很无敌了,我们知道工作中写的代码,可读性基本是第一位的,那种上帝都看不懂的代码谁改过谁知道,心里的苦都没地方诉说,xD;

第三回

在循环中,一般处理是循环下标,通过下标索引元素,那么如果我循环得到的就是元素呢,看看Python是如何同时得到下标和元素的;

代码:

	a = [8, 23, 45, 12, 78]
for index, value in enumerate(a):
print(index , value)

emumerate在Python中非常常用,而且很实用;

第四回

这一回我想说一个简单,但是很Python的特性,交换变量,当我们在交换两个变量(或者多个,这个越多,越能体现Python这种特性的优势),通常需要临时变量做转接,看看Python是怎么做的;

代码:

	a=1
b=2
c=3
a,b,c = b,c,a

这个特性很简单,用的也很多,但是我认为它代表的是Python的哲学,少就是多,我果然是个哲人;

第五回

第五回作为第一次Python分享的最后一回,我想用Python的彩蛋作为结尾,我觉得这也是Python作为一门语言不一样的地方,它不是严肃、一板一眼的,而是灵活有趣的;

  • Hello World import hello
  • 经典 Python 之禅 import this
  • 反地心引力漫画 import antigravity
  • C++ 程序员的福利 from future import braces
  • 愚人节彩蛋-python3 from future import barry_as_FLUFL

最后

希望大家积极补充啊,各种脑洞黑操作灵性都搞起来,上面也只是我的一家之言,抛砖引玉;

最后的最后

大家可以到我的Github上看看有没有其他需要的东西,目前主要是自己做的机器学习项目、Python各种脚本工具、数据分析挖掘项目以及Follow的大佬、Fork的项目等:https://github.com/NemoHoHaloAi

Python奇技淫巧 - 持续更新中....的更多相关文章

  1. Python开发【第二十三篇】:持续更新中...

    Python开发[第二十三篇]:持续更新中...

  2. Pig基础学习【持续更新中】

    *本文参考了Pig官方文档以及已有的一些博客,并加上了自己的一些知识性的理解.目前正在持续更新中.* Pig作为一种处理大规模数据的高级查询语言,底层是转换成MapReduce实现的,可以作为MapR ...

  3. Pig语言基础-【持续更新中】

      ***本文参考了Pig官方文档以及已有的一些博客,并加上了自己的一些知识性的理解.目前正在持续更新中.***   Pig作为一种处理大规模数据的高级查询语言,底层是转换成MapReduce实现的, ...

  4. 史上最全的spark面试题——持续更新中

    史上最全的spark面试题——持续更新中 2018年09月09日 16:34:10 为了九亿少女的期待 阅读数 13696更多 分类专栏: Spark 面试题   版权声明:本文为博主原创文章,遵循C ...

  5. git常用命令(持续更新中)

    git常用命令(持续更新中) 本地仓库操作git int                                 初始化本地仓库git add .                       ...

  6. Atom使用记录(持续更新中)

    部分内容取自:http://www.jianshu.com/p/dd97cbb3c22d,我自己也在使用,持续更新中 Atom安装插件在窗口中File---Setting---install 在里面进 ...

  7. java视频教程 Java自学视频整理(持续更新中...)

    视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...

  8. 系列文章:老项目的#iPhone6与iPhone6Plus适配#(持续更新中,更新日期2014年10月12日 星期日 )

    本文永久地址为http://www.cnblogs.com/ChenYilong/p/4020399.html ,转载请注明出处. ********************************** ...

  9. 知道创宇爬虫题--代码持续更新中 - littlethunder的专栏 - 博客频道 - CSDN.NET

    知道创宇爬虫题--代码持续更新中 - littlethunder的专栏 - 博客频道 - CSDN.NET undefined 公司介绍 - 数人科技 undefined

随机推荐

  1. 原型工具介绍———墨刀以及Axure RP比较

    原型工具——墨刀以及Axure的比较 1759233 目录 一.了解背景... 1 二.下面分开介绍一下这两款工具... 1 2.1 Axure RP. 1 2.2墨刀... 6 三.比较... 8 ...

  2. JavaWeb实现增删查改(图书信息管理)——之查询

     关于此次CRUD所需要的jar包,本人把文件放在了百度网盘,需要的自行去下载: 链接:https://pan.baidu.com/s/1Pqe88u6aPaeVjjOq1YFQ-w  提取码:pim ...

  3. P3810 【模板】三维偏序(陌上花开)cdq分治

    传送门:https://www.luogu.org/problemnew/show/P3810 cdq分治的模板题,第一层外部排序,第二层cdq归并排序,这个时候不用考虑第一次的顺序,第三次用树状数组 ...

  4. zoj 3724 树状数组经典

    问题:n个点,对于每个点i,都有一条连向i+1的有向边,另外有m条其他的有向边,有q个询问(u,v)求u到v的最短路   将m条有向边和q个询问对所表示的点对一起排序,(u,v)u大的排前,u一样的v ...

  5. HDU-10240Max Sum Plus Plus+动态规划+滚动数组

    Max Sum Plus Plus 题意:题意理解了老半天,这里是说在给定数列中,取m组子数列,不能有重复,使得这些子序列的和最大: 就比如m=2时候,1 /2/-4/5/6.可以不用拿-4的意思: ...

  6. Codefroces 920F SUM and REPLACE(线段树)

    SUM and REPLACE 题意:给你n个数,进行m次操作,分别是将区间[l,r]内的所有数替换成自己的因子数 和 对区间[l,r]进行求和. 题解:可以发现2的因子个数还是2,1的因子个数还是1 ...

  7. Codeforces Round #480 (Div. 2) A. Links and Pearls

    题目地址:http://codeforces.com/contest/980/problem/A 官方题解: 我的理解:o表示珍珠,-表示链子,给一串字符串你可以任意重组这条项链(不能删去),判断这条 ...

  8. lightoj 1125 - Divisible Group Sums (dp)

    Given a list of N numbers you will be allowed to choose any M of them. So you can choose in NCM ways ...

  9. codeforces 27 E. Number With The Given Amount Of Divisors(数论+dfs)

    题目链接:http://codeforces.com/contest/27/problem/E 题意:问因数为n个的最小的数是多少. 题解:一般来说问到因数差不多都会想到素因子. 任意一个数x=(p1 ...

  10. 牛客网暑期ACM多校训练营(第二场) I Car 思维

    链接:https://www.nowcoder.com/acm/contest/140/I来源:牛客网 White Cloud has a square of n*n from (1,1) to (n ...