让你相见恨晚的十个Python骚操作


Posted in Python onNovember 18, 2020

前言

众所周知,Python 以语法简洁著称,同样实现一个功能,Java 可能要十来行,Python 一行就可以搞定。

Python 的代码之所以这么优雅,完全归功于其独有的特性,只要你掌握了这些特性,同样可以写出像诗一样的代码。

下面我们就一起看看 Python 中的骚操作。

0x00 Hello World

对于大部分程序员来说,第一个程序应该都是 "Hello World!" 了,Python 直接将该入门程序做成了一个包。

In [1]: import __hello__
Hello world!

0x01 交换变量

一行代码搞定变量交换,无需临时变量,也无需异或操作。

In [1]: x,y = y,x

0x02 变量比较

对于变量的连续比较,Python 是支持的比较好的。

In [24]: x = 10

In [25]: 5 < x < 20
Out[25]: True

In [26]: 11 < x < 20
Out[26]: False

0x03 列表推导式

In [2]: list = list(range(10))
# 取偶数
In [3]: even = [x for x in list if x % 2 == 0]

In [4]: even
Out[4]: [0, 2, 4, 6, 8]

0x04 合并字符串

很多语言合并字符串大都是通过 + 号来实现的,但由于字符串的不可变性,不断合并后的字符串会不断的申请新的内存。

In [5]: x = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

In [6]: ''.join(x)
Out[6]: 'abcdefg'

0x05 列表切片

In [2]: x
Out[2]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 取索引为 2 到 8 的值,步长为 2
In [4]: x[2:8:2]
Out[4]: [2, 4, 6]

# 步长为负值,表示从后面取值
In [6]: x[::-2]
Out[6]: [9, 7, 5, 3, 1]

0x06 反转字符串

In [7]: x = 'Hello Python!'

In [8]: x[::-1]
Out[8]: '!nohtyP olleH'

0x07 同时获取下标和值

x = list(range(10))
for index, value in enumerate(x):
 print(index, value)

0x08 zip()函数

In [7]: a = [1,2,3]

In [8]: b = [4,5,6]

In [9]: c = [7,8,9]

In [16]: list(zip(a, b, c))
Out[16]: [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

# 逆操作
In [18]: zz = (zip(a, b, c))

In [19]: x, y, z = zip(*zz)

In [20]: x,y,z
Out[20]: ((1, 2, 3), (4, 5, 6), (7, 8, 9))

# 合并列表相邻项
In [22]: a = [1, 2, 3, 4, 5, 6]

In [23]: list(zip(a[::2], a[1::2]))
Out[23]: [(1, 2), (3, 4), (5, 6)]

0x09 闭包

def outer(x):
 def inner(y):
  # 在内函数中 用到了外函数的变量
  nonlocal x
  x += y
  return x + y

 # 外函数的返回值是内函数的引用
 return inner

fun = outer(10)

print(fun(10)) # 30
print(fun(10)) # 40
print(fun(10)) # 50

总结

今天我们学习了一些 Python 的技巧,都是大家平时工作必须掌握的技能。大家学会了么。

到此这篇关于让你相见恨晚的十个Python骚操作的文章就介绍到这了,更多相关十个Python骚操作内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python控制台显示时钟的示例
Feb 24 Python
在python中的socket模块使用代理实例
May 29 Python
Python中还原JavaScript的escape函数编码后字符串的方法
Aug 22 Python
python实现定时自动备份文件到其他主机的实例代码
Feb 23 Python
Python2中文处理纪要的实现方法
Mar 10 Python
多个应用共存的Django配置方法
May 30 Python
详解PyCharm配置Anaconda的艰难心路历程
Aug 13 Python
python基础梳理(一)(推荐)
Apr 06 Python
pytorch 实现删除tensor中的指定行列
Jan 13 Python
基于python+selenium自动健康打卡的实现代码
Jan 13 Python
Python实现Excel自动分组合并单元格
Feb 22 Python
浅析Python模块之间的相互引用问题
Feb 26 Python
python搜索算法原理及实例讲解
Nov 18 #Python
python的数学算法函数及公式用法
Nov 18 #Python
python3中TQDM库安装及使用详解
Nov 18 #Python
Python3中FuzzyWuzzy库实例用法
Nov 18 #Python
scrapy redis配置文件setting参数详解
Nov 18 #Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 #Python
详解Scrapy Redis入门实战
Nov 18 #Python
You might like
PHP学习资料汇总与网址
2007/03/16 PHP
ThinkPHP php 框架学习笔记
2009/10/30 PHP
PHP引用的调用方法分析
2016/04/25 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
2017/06/09 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
php设计模式之适配器模式实例分析【星际争霸游戏案例】
2020/04/07 PHP
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
js字符串日期yyyy-MM-dd转化为date示例代码
2014/03/06 Javascript
jquery等待效果示例
2014/05/01 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
2015/07/15 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
JavaScript轮播图简单制作方法
2017/02/20 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
Vue项目中使用jsonp抓取跨域数据的方法
2019/11/10 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
python使用BeautifulSoup分页网页中超链接的方法
2015/04/04 Python
在MAC上搭建python数据分析开发环境
2016/01/26 Python
python实现用户登录系统
2016/05/21 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
windows下python安装pip图文教程
2018/05/25 Python
Django csrf 两种方法设置form的实例
2019/02/03 Python
python函数参数(必须参数、可变参数、关键字参数)
2019/08/16 Python
美国球鞋寄卖网站:Stadium Goods
2018/05/09 全球购物
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
有个性的自我评价范文
2013/11/15 职场文书
网上卖盒饭创业计划书
2014/01/26 职场文书
《两个铁球同时着地》教学反思
2014/02/13 职场文书
写给老婆的检讨书
2014/02/21 职场文书
小学庆六一活动总结
2014/08/28 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
2015年学校精神文明工作总结
2015/05/27 职场文书
图解排序算法之希尔排序Java实现
2021/06/26 Java/Android
使用Java去实现超市会员管理系统
2022/03/18 Java/Android