Python奇技淫巧 - 持续更新中....
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奇技淫巧 - 持续更新中....的更多相关文章
- Python开发【第二十三篇】:持续更新中...
Python开发[第二十三篇]:持续更新中...
- Pig基础学习【持续更新中】
*本文参考了Pig官方文档以及已有的一些博客,并加上了自己的一些知识性的理解.目前正在持续更新中.* Pig作为一种处理大规模数据的高级查询语言,底层是转换成MapReduce实现的,可以作为MapR ...
- Pig语言基础-【持续更新中】
***本文参考了Pig官方文档以及已有的一些博客,并加上了自己的一些知识性的理解.目前正在持续更新中.*** Pig作为一种处理大规模数据的高级查询语言,底层是转换成MapReduce实现的, ...
- 史上最全的spark面试题——持续更新中
史上最全的spark面试题——持续更新中 2018年09月09日 16:34:10 为了九亿少女的期待 阅读数 13696更多 分类专栏: Spark 面试题 版权声明:本文为博主原创文章,遵循C ...
- git常用命令(持续更新中)
git常用命令(持续更新中) 本地仓库操作git int 初始化本地仓库git add . ...
- Atom使用记录(持续更新中)
部分内容取自:http://www.jianshu.com/p/dd97cbb3c22d,我自己也在使用,持续更新中 Atom安装插件在窗口中File---Setting---install 在里面进 ...
- java视频教程 Java自学视频整理(持续更新中...)
视频教程,马士兵java视频教程,java视频 1.Java基础视频 <张孝祥JAVA视频教程>完整版[RMVB](东西网) 历经5年锤炼(史上最适合初学者入门的Java基础视频)(传智播 ...
- 系列文章:老项目的#iPhone6与iPhone6Plus适配#(持续更新中,更新日期2014年10月12日 星期日 )
本文永久地址为http://www.cnblogs.com/ChenYilong/p/4020399.html ,转载请注明出处. ********************************** ...
- 知道创宇爬虫题--代码持续更新中 - littlethunder的专栏 - 博客频道 - CSDN.NET
知道创宇爬虫题--代码持续更新中 - littlethunder的专栏 - 博客频道 - CSDN.NET undefined 公司介绍 - 数人科技 undefined
随机推荐
- python request接口测试笔记(1)
python request接口测试笔记(1) 涉及到的功能说明: 需要登录拿到token,才能进行下一个接口的请求 读取csv文件中的信息,作为接口的参数 将接口响应结果,写入csv文件,以便分析统 ...
- [Python] socket发送UDP广播实现聊天室功能
一.说明 本文主要使用socket.socket发送UDP广播来实现聊天室功能. 重点难点:理解UDP通讯流程.多线程.UDP广播收发等. 测试环境:Win10\Python3.5. 程序基本流程:创 ...
- [Python] 常见的排序与搜索算法
说明: 本文主要使用python实现常见的排序与搜索算法:冒泡排序.选择排序.插入排序.希尔排序.快速排序.归并排序以及二分查找等. 对算法的基本思想作简要说明,只要理解了基本的思想,与实现语言无关. ...
- Mysql系列 - 第3天:管理员必备技能(必须掌握)
这是mysql系列第3篇文章. 环境:mysql5.7.25,cmd命令中进行演示. 在玩mysql的过程中,经常遇到有很多朋友在云上面玩mysql的时候,说我创建了一个用户为什么不能登录?为什么没有 ...
- Flink 源码解析 —— TaskManager 处理 SubmitJob 的过程
TaskManager 处理 SubmitJob 的过程 https://t.zsxq.com/eu7mQZj 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink ...
- Flink的Job启动TaskManager端(源码分析)
前面说到了 Flink的JobManager启动(源码分析) 启动了TaskManager 然后 Flink的Job启动JobManager端(源码分析) 说到JobManager会将转化得到 ...
- 上海学生事务中心&新华路派出所的位置
上海学生事务中心: 地址:冠生园路401号 工作时间:9:00-17:00 电话:021-64829191 新华路派出所: 地址:新华路590弄21号 工作时间:周一至周六 9:00 ...
- I-string_2019牛客暑期多校训练营(第四场)
题意 当a != b且a != rev(b)则认为a串与b串不相等,rev(b)表示b串的反串,例如rev(abcd) = dcba 给出一个串求出该串所有不相等的子串个数 题解 先利用后缀数组求出s ...
- 洛谷 P4206 [NOI2005]聪聪与可可 题解
题面 输入 数据的第1行为两个整数N和E,以空格分隔,分别表示森林中的景点数和连接相邻景点的路的条数. 第2行包含两个整数C和M,以空格分隔,分别表示初始时聪聪和可可所在的景点的编号. 接下来E行,每 ...
- 洛谷p2015二叉苹果树&yzoj1856多叉苹果树题解
二叉 多叉 有一棵苹果树,如果树枝有分叉,可以是分多叉,分叉数k>=0(就是说儿子的结点数大于等于0)这棵树共有N个结点(叶子点或者树枝分叉点),编号为1~N,树根编号一定是1.我们用一根树枝两 ...