儿童学习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的Django框架中的模版相关知识
Jul 15 Python
Python的Socket编程过程中实现UDP端口复用的实例分享
Mar 19 Python
Python实现压缩与解压gzip大文件的方法
Sep 18 Python
在Python中定义一个常量的方法
Nov 10 Python
pandas dataframe添加表格框线输出的方法
Feb 08 Python
python实现Excel文件转换为TXT文件
Apr 28 Python
Python画图高斯分布的示例
Jul 10 Python
Python join()函数原理及使用方法
Nov 14 Python
python如何构建mock接口服务
Jan 28 Python
Python 里最强的地图绘制神器
Mar 01 Python
撤回我也能看到!教你用Python制作微信防撤回脚本
Jun 11 Python
Python进程池与进程锁之语法学习
Apr 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实现小型站点广告管理
2006/10/09 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
php根据分类合并数组的方法实例详解
2013/11/06 PHP
jQuery 操作option的实现代码
2011/03/03 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
javascript判断chrome浏览器的方法
2014/03/26 Javascript
使用百度地图api实现根据地址查询经纬度
2014/12/11 Javascript
JavaScript中的parse()方法使用简介
2015/06/12 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
微信小程序实现登录页云层漂浮的动画效果
2017/05/05 Javascript
详解Vue改变数组中对象的属性不重新渲染View的解决方案
2018/09/21 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
python开发的小球完全弹性碰撞游戏代码
2013/10/15 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
Python正则表达式实现截取成对括号的方法
2017/01/06 Python
python实现拓扑排序的基本教程
2018/03/11 Python
python 列表删除所有指定元素的方法
2018/04/19 Python
Python列表生成式与生成器操作示例
2018/08/01 Python
python判断计算机是否有网络连接的实例
2018/12/15 Python
Python绘制频率分布直方图的示例
2019/07/08 Python
Django的用户模块与权限系统的示例代码
2019/07/24 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
基于keras中的回调函数用法说明
2020/06/17 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
HTML5 video 视频标签使用介绍
2014/02/03 HTML / CSS
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
建筑结构施工专业推荐信
2014/02/21 职场文书
工作鉴定评语
2014/05/04 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
诉讼和解协议书
2016/03/23 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA