儿童学习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 解析XML文件
Apr 15 Python
python简单实现操作Mysql数据库
Jan 29 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
Python 函数基础知识汇总
Mar 09 Python
Python Requests模拟登录实现图书馆座位自动预约
Apr 27 Python
Python实现字典按key或者value进行排序操作示例【sorted】
May 03 Python
在python 中split()使用多符号分割的例子
Jul 15 Python
Python守护进程实现过程详解
Feb 10 Python
Python StringIO及BytesIO包使用方法解析
Jun 15 Python
Python使用windows设置定时执行脚本
Nov 12 Python
详解python 条件语句和while循环的实例代码
Dec 28 Python
Python turtle编写简单的球类小游戏
Mar 31 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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
PHP实现计算器小功能
2020/08/28 PHP
使用IE的地址栏来辅助调试Web页脚本
2007/03/08 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
JSP跨iframe如何传递参数实现代码
2013/09/21 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
jquery控制背景音乐开关与自动播放提示音的方法
2015/02/06 Javascript
javascript解析xml实现省市县三级联动的方法
2015/07/25 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
JavaScript实现自定义媒体播放器方法介绍
2017/01/03 Javascript
javascript中的面向对象
2017/03/30 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
nodejs操作mongodb的增删改查功能实例
2017/11/09 NodeJs
详解js的视频和音频采集
2018/08/09 Javascript
Vue.js 实现数据展示全部和收起功能
2018/09/05 Javascript
iview在vue-cli3如何按需加载的方法
2018/10/31 Javascript
Vue-CLI 3.X 部署项目至生产服务器的方法
2019/03/22 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
vue中是怎样监听数组变化的
2020/10/24 Javascript
[42:04]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#3Secret VS OG第一局
2016/03/03 DOTA
Python实现两个list求交集,并集,差集的方法示例
2018/08/02 Python
Python实现图片转字符画的代码实例
2019/02/22 Python
详解如何通过H5(浏览器/WebView/其他)唤起本地app
2017/12/11 HTML / CSS
建筑工程技术应届生自荐信
2013/09/27 职场文书
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
《我的信念》教学反思
2014/02/15 职场文书
小学作文评语大全
2014/04/21 职场文书
毕业生代领毕业材料的授权委托书
2014/09/29 职场文书
开展党的群众路线教育实践活动个人对照检查材料
2014/11/05 职场文书
2014年绩效考核工作总结
2014/12/11 职场文书
项目备案申请报告
2015/05/15 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
使用python求解迷宫问题的三种实现方法
2022/03/17 Python