儿童学习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使用fileinput模块实现逐行读取文件的方法
Apr 29 Python
Python实现简单登录验证
Apr 13 Python
Python探索之Metaclass初步了解
Oct 28 Python
python定时关机小脚本
Jun 20 Python
python3.x实现base64加密和解密
Mar 28 Python
利用Pandas和Numpy按时间戳将数据以Groupby方式分组
Jul 22 Python
Django通过dwebsocket实现websocket的例子
Nov 15 Python
python实现最速下降法
Mar 24 Python
Python定时任务框架APScheduler原理及常用代码
Oct 05 Python
python使用selenium爬虫知乎的方法示例
Oct 28 Python
Opencv python 图片生成视频的方法示例
Nov 18 Python
分享提高 Python 代码的可读性的技巧
Mar 03 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
福利彩票幸运号码自动生成器
2006/10/09 PHP
删除无限分类并同时删除它下面的所有子分类的方法
2010/08/08 PHP
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
讲解WordPress开发中一些常用的debug技巧
2015/12/18 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
jquery $.ajax()取xml数据的小问题解决方法
2010/11/20 Javascript
计算世界完全对称日的js代码,粗糙版
2011/11/04 Javascript
js实现一个省市区三级联动选择框代码分享
2013/03/06 Javascript
jQuery函数的等价原生函数代码示例
2013/05/27 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
JavaScript中三个等号和两个等号的区别(== 和 ===)浅析
2016/09/22 Javascript
非常优秀的JS图片轮播插件Swiper的用法
2017/01/03 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
微信小程序实现侧边分类栏
2019/10/21 Javascript
vue 路由守卫(导航守卫)及其具体使用
2020/02/25 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
微信小程序实现简单的select下拉框
2020/11/23 Javascript
Python警察与小偷的实现之一客户端与服务端通信实例
2014/10/09 Python
使用Python实现一个简单的项目监控
2015/03/31 Python
利用numpy和pandas处理csv文件中的时间方法
2018/04/19 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
对python中不同模块(函数、类、变量)的调用详解
2019/07/16 Python
pymysql模块的使用(增删改查)详解
2019/09/09 Python
分布式全文检索引擎ElasticSearch原理及使用实例
2020/11/14 Python
加拿大领先的冒险和户外零售商:Atmosphere
2017/12/19 全球购物
MySQL面试题
2014/01/12 面试题
写出SQL四条最基本的数据操作语句(DML)
2012/12/12 面试题
会计电算化专业毕业生推荐信
2013/12/24 职场文书
团队精神口号
2014/06/06 职场文书
公司会议开幕词
2016/03/03 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery