儿童学习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字典多条件排序方法实例
Jun 30 Python
Python实现二分查找算法实例
May 26 Python
解决安装tensorflow遇到无法卸载numpy 1.8.0rc1的问题
Jun 13 Python
tensorflow: 查看 tensor详细数值方法
Jun 13 Python
python实现图书借阅系统
Feb 20 Python
Django中使用CORS实现跨域请求过程解析
Aug 05 Python
Python使用matplotlib实现交换式图形显示功能示例
Sep 06 Python
pytorch模型预测结果与ndarray互转方式
Jan 15 Python
Python要如何实现列表排序的几种方法
Feb 21 Python
Python并发请求下限制QPS(每秒查询率)的实现代码
Jun 05 Python
Django3中的自定义用户模型实例详解
Aug 23 Python
python中四舍五入的正确打开方式
Jan 18 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定时自动生成静态HTML的实现代码
2010/06/20 PHP
php下载文件的代码示例
2012/06/29 PHP
PHP处理excel cvs表格的方法实例介绍
2013/05/13 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
解决php的“It is not safe to rely on the system’s timezone settings”问题
2015/10/08 PHP
PHP 500报错的快速解决方法
2016/12/14 PHP
利用PHPExcel实现Excel文件的写入和读取
2017/04/26 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
laravel框架语言包拓展实现方法分析
2019/11/22 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
关于Javascript 对象(object)的prototype
2014/05/09 Javascript
require.js深入了解 require.js特性介绍
2014/09/04 Javascript
JavaScript中的some()方法使用详解
2015/06/09 Javascript
jquery实现图片切换代码
2016/10/13 Javascript
Vue组件开发初探
2017/02/14 Javascript
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
使用vue构建一个上传图片表单
2017/07/04 Javascript
AngularJS实现的JSONP跨域访问数据传输功能详解
2017/07/20 Javascript
基于vue2.0实现简单轮播图
2017/11/27 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
Django中使用locals()函数的技巧
2015/07/16 Python
pycharm执行python时,填写参数的方法
2018/10/29 Python
Python3使用Selenium获取session和token方法详解
2021/02/16 Python
台湾团购、宅配和优惠券:17Life
2017/08/14 全球购物
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
Omio中国:全欧洲低价大巴、火车和航班搜索和比价
2018/08/09 全球购物
社团成立邀请函
2014/01/08 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
新闻稿件写作技巧
2015/07/18 职场文书
2015初一年级组工作总结
2015/07/24 职场文书
大学生创业计划书
2019/06/24 职场文书
导游词之湖北武当山
2019/09/23 职场文书
pandas 实现将NaN转换为None
2021/05/14 Python