儿童学习python的一些小技巧


Posted in Python onMay 27, 2018

以下是一些Python实用技巧和工具,希望能对大家有所帮助。

交换变量

x = 6
y = 5
x, y = y, x
print x
>>> 5
print y
>>> 6

if 语句在行内

print "Hello" if True else "World"
>>> Hello

连接

下面的最后一种方式在绑定两个不同类型的对象时显得很cool。

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
print nfc + afc
>>> ['Packers', '49ers', 'Ravens', 'Patriots']
print str(1) + " world"
>>> 1 world
print `1` + " world"
>>> 1 world
print 1, "world"
>>> 1 world
print nfc, 1
>>> ['Packers', '49ers'] 1

数字技巧

#除后向下取整

print 5.0//2
>>> 2
# 2的5次方
print 2**5
>> 32

注意浮点数的除法

print .3/.1
>>> 2.9999999999999996
print .3//.1
>>> 2.0

数值比较

这是我见过诸多语言中很少有的如此棒的简便法

x = 2
if 3 > x > 1:
print x
>>> 2
if 1 < x > 0:
print x
>>> 2

同时迭代两个列表

nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
for teama, teamb in zip(nfc, afc):
print teama + " vs. " + teamb
>>> Packers vs. Ravens
>>> 49ers vs. Patriots

带索引的列表迭代

teams = ["Packers", "49ers", "Ravens", "Patriots"]
for index, team in enumerate(teams):
print index, team
>>> 0 Packers
>>> 1 49ers
>>> 2 Ravens
>>> 3 Patriots

列表推导式

已知一个列表,我们可以刷选出偶数列表方法:

numbers = [1,2,3,4,5,6]
even = []
for number in numbers:
if number%2 == 0:
even.append(number)

转变成如下:

numbers = [1,2,3,4,5,6]
even = [number for number in numbers if number%2 == 0]

是不是很牛呢,哈哈。

字典推导

和列表推导类似,字典可以做同样的工作:

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print {key: value for value, key in enumerate(teams)}
>>> {'49ers': 1, 'Ravens': 2, 'Patriots': 3, 'Packers': 0}

初始化列表的值

items = [0]*3
print items
>>> [0,0,0]

列表转换为字符串

teams = ["Packers", "49ers", "Ravens", "Patriots"]
print ", ".join(teams)
>>> 'Packers, 49ers, Ravens, Patriots'

从字典中获取元素

我承认try/except代码并不雅致,不过这里有一种简单方法,尝试在字典中查找key,如果没有找到对应的alue将用第二个参数设为其变量值。

data = {'user': 1, 'name': 'Max', 'three': 4}
try:
is_admin = data['admin']
except KeyError:
is_admin = False
data = {'user': 1, 'name': 'Max', 'three': 4}
is_admin = data.get('admin', False)

获取列表的子集

有时,你只需要列表中的部分元素,这里是一些获取列表子集的方法。

x = [1,2,3,4,5,6]
#前3个
print x[:3]
>>> [1,2,3]
#中间4个
print x[1:5]
>>> [2,3,4,5]
#最后3个
print x[-3:]
>>> [4,5,6]
#奇数项
print x[::2]
>>> [1,3,5]
#偶数项
print x[1::2]
>>> [2,4,6]

60个字符解决FizzBuzz

前段时间Jeff Atwood 推广了一个简单的编程练习叫FizzBuzz,问题引用如下:

写一个程序,打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”。

这里就是一个简短的,有意思的方法解决这个问题:

集合

除了python内置的数据类型外,在collection模块同样还包括一些特别的用例,在有些场合Counter非常实用。如果你参加过在这一年的Facebook HackerCup,你甚至也能找到他的实用之处。

from collections import Counter
print Counter("hello")
>>> Counter({'l': 2, 'h': 1, 'e': 1, 'o': 1})

迭代工具

和collections库一样,还有一个库叫itertools,对某些问题真能高效地解决。其中一个用例是查找所有组合,他能告诉你在一个组中元素的所有不能的组合方式

from itertools import combinations
teams = ["Packers", "49ers", "Ravens", "Patriots"]
for game in combinations(teams, 2):
print game
>>> ('Packers', '49ers')
>>> ('Packers', 'Ravens')
>>> ('Packers', 'Patriots')
>>> ('49ers', 'Ravens')
>>> ('49ers', 'Patriots')
>>> ('Ravens', 'Patriots')
False == True

比起实用技术来说这是一个很有趣的事,在python中,True和False是全局变量,因此:

False = True
if False:
print "Hello"
else:
print "World"
>>> Hello

如果你还有任何很酷的奇技淫巧欢迎留言分享

Python 相关文章推荐
python获取豆瓣电影简介代码分享
Jan 16 Python
Python的加密模块md5、sha、crypt使用实例
Sep 28 Python
用Python制作在地图上模拟瘟疫扩散的Gif图
Mar 31 Python
python获取指定网页上所有超链接的方法
Apr 04 Python
python生成二维码的实例详解
Oct 29 Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 Python
pytorch构建网络模型的4种方法
Apr 13 Python
python opencv旋转图像(保持图像不被裁减)
Jul 26 Python
Anaconda+VSCode配置tensorflow开发环境的教程详解
Mar 30 Python
python中常见错误及解决方法
Jun 21 Python
pycharm 使用anaconda为默认环境的操作
Feb 05 Python
解决Python保存文件名太长OSError: [Errno 36] File name too long
May 11 Python
django初始化数据库的实例
May 27 #Python
django 删除数据库表后重新同步的方法
May 27 #Python
Django 根据数据模型models创建数据表的实例
May 27 #Python
Django使用Mysql数据库已经存在的数据表方法
May 27 #Python
django中模板的html自动转意方法
May 27 #Python
Django读取Mysql数据并显示在前端的实例
May 27 #Python
django加载本地html的方法
May 27 #Python
You might like
php中转义mysql语句的实现代码
2011/06/24 PHP
SESSION存放在数据库用法实例
2015/08/08 PHP
PHP的几个常用加密函数
2016/02/03 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
2017/11/14 PHP
PHP+redis实现的限制抢购防止商品超发功能详解
2019/09/19 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
Javascript 布尔型分析
2008/12/22 Javascript
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
jquery制作搜狐快站页面效果示例分享
2014/02/21 Javascript
Seajs的学习笔记
2014/03/04 Javascript
jquery默认校验规则整理
2014/03/24 Javascript
js获得当前系统日期时间的方法
2015/05/06 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
JS使用cookie设置样式的方法
2016/06/30 Javascript
简单实现jquery焦点图
2016/12/12 Javascript
js oncontextmenu事件使用详解
2017/03/25 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
基于vue v-for 循环复选框-默认勾选第一个的实现方法
2018/03/03 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
Vue中props的详解
2019/05/16 Javascript
Vue项目接入Paypal实现示例详解
2020/06/04 Javascript
vue内置组件keep-alive事件动态缓存实例
2020/10/30 Javascript
关于反爬虫的一些简单总结
2017/12/13 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
django rest framework vue 实现用户登录详解
2019/07/29 Python
Python常用编译器原理及特点解析
2020/03/23 Python
python获取响应某个字段值的3种实现方法
2020/04/30 Python
Python模块常用四种安装方式
2020/10/20 Python
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
具结保证书范本
2015/05/11 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
详解CSS不受控制的position fixed
2021/05/25 HTML / CSS
MySQL远程无法连接的一些常见原因总结
2022/09/23 MySQL