儿童学习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 tempfile模块学习笔记(临时文件)
May 25 Python
Windows下安装python2和python3多版本教程
Mar 30 Python
使用Python制作一个打字训练小工具
Oct 01 Python
pycharm显示远程图片的实现
Nov 04 Python
Win10下安装并使用tensorflow-gpu1.8.0+python3.6全过程分析(显卡MX250+CUDA9.0+cudnn)
Feb 17 Python
Python编程快速上手——疯狂填词程序实现方法分析
Feb 29 Python
解决Python在导入文件时的FileNotFoundError问题
Apr 10 Python
使用Python防止SQL注入攻击的实现示例
May 21 Python
keras slice layer 层实现方式
Jun 11 Python
浅谈django框架集成swagger以及自定义参数问题
Jul 07 Python
详解Pycharm安装及Django安装配置指南
Sep 15 Python
python 利用 PIL 将数组值转成图片的实现
Apr 12 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
最令PHP初学者们头痛的十四个问题
2007/01/15 PHP
php Try Catch异常测试
2009/03/01 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
phpstorm最新激活码分享亲测phpstorm2020.2.3版可用
2020/11/22 PHP
解javascript 混淆加密收藏
2009/01/16 Javascript
Javascript玩转继承(二)
2014/05/08 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
Express的路由详解
2015/12/10 Javascript
JS中Eval解析JSON字符串的一个小问题
2016/02/21 Javascript
jQuery实现点击弹出背景变暗遮罩效果实例代码
2016/06/24 Javascript
解决Vue编译时写在style中的路径问题
2017/09/21 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
AngularJS实现的2048小游戏功能【附源码下载】
2018/01/03 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
jQuery实现监听下拉框选中内容发生改变操作示例
2018/07/13 jQuery
bootstrap下拉框动态赋值方法
2018/08/10 Javascript
浅析vue-router原理
2018/10/19 Javascript
Vue中通过vue-router实现命名视图的问题
2020/04/23 Javascript
vue从后台渲染文章列表以及根据id跳转文章详情详解
2020/12/14 Vue.js
[38:38]完美世界DOTA2联赛PWL S3 access vs Rebirth 第二场 12.17
2020/12/18 DOTA
python读取json文件并将数据插入到mongodb的方法
2015/03/23 Python
python分析网页上所有超链接的方法
2015/05/08 Python
python字典DICT类型合并详解
2017/08/17 Python
利用python将图片转换成excel文档格式
2017/12/30 Python
转换科学计数法的数值字符串为decimal类型的方法
2018/07/16 Python
Python符号计算之实现函数极限的方法
2019/07/15 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
在python中使用pymysql往mysql数据库中插入(insert)数据实例
2020/03/02 Python
CSS3教程(5):网页背景图片
2009/04/02 HTML / CSS
2014国庆节幼儿园亲子活动方案
2014/09/16 职场文书
广告业务员岗位职责
2015/02/13 职场文书
初中开学典礼新闻稿
2015/07/17 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
2019年员工晋升管理制度范本!
2019/07/08 职场文书