儿童学习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 相关文章推荐
spyder常用快捷键(分享)
Jul 19 Python
python3获取两个日期之间所有日期,以及比较大小的实例
Apr 08 Python
python opencv旋转图像(保持图像不被裁减)
Jul 26 Python
python 划分数据集为训练集和测试集的方法
Dec 11 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
Sep 23 Python
给你一面国旗 教你用python画中国国旗
Sep 24 Python
Python lxml模块的基本使用方法分析
Dec 21 Python
关于Python解包知识点总结
May 05 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
python raise的基本使用
Sep 10 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 Python
Python 的演示平台支持 WSGI 接口的应用
Apr 20 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获取指定函数定义在哪个文件中以及其所在的行号实例
2014/05/08 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
jQuery EasyUI API 中文文档 - TimeSpinner时间微调器
2011/10/23 Javascript
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
js实现的简单radio背景颜色选择器代码
2015/08/18 Javascript
JS使用cookie实现DIV提示框只显示一次的方法
2015/11/05 Javascript
jQuery实现鼠标双击Table单元格变成文本框及输入内容后更新到数据库的方法
2015/11/25 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
JS中常用的输出方式(五种)
2016/06/12 Javascript
Vue.js每天必学之构造器与生命周期
2016/09/05 Javascript
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
ligerUI的ligerDialog关闭刷新的方法
2019/09/27 Javascript
vue 中 elment-ui table合并上下两行相同数据单元格
2019/12/26 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
python3读取csv和xlsx文件的实例
2018/06/22 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
python  文件的基本操作 菜中菜功能的实例代码
2019/07/17 Python
pytorch模型预测结果与ndarray互转方式
2020/01/15 Python
CSS3中的content属性使用示例
2015/07/20 HTML / CSS
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
巧用HTML5给按钮背景设计不同的动画简单实例
2016/08/09 HTML / CSS
环境工程大学生个人的自我评价
2013/10/08 职场文书
财务会计实习报告体会
2013/12/20 职场文书
中秋节礼品促销方案
2014/02/02 职场文书
两只小狮子教学反思
2014/02/05 职场文书
节水倡议书范文
2014/04/15 职场文书
令人印象深刻的自荐信
2014/05/25 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
2014年作风建设工作总结
2014/10/29 职场文书
交警正风肃纪剖析材料
2014/10/29 职场文书
工作违纪检讨书范文
2015/01/26 职场文书
兴趣班停课通知
2015/04/24 职场文书
公司年会晚会开幕词
2019/04/02 职场文书
Windows7下FTP搭建图文教程
2022/08/05 Servers