适合Python初学者的一些编程技巧


Posted in Python onFebruary 12, 2020

这篇文章主要介绍了给Python初学者的一些编程技巧,皆是基于基础的一些编程习惯建议,需要的朋友可以参考下

交换变量

x = 6
y = 5 
x, y = y, x
print x
>>> 5
print y
>>> 6

if 语句在行内

print "Hello" if True else "World"
>>> Hello

连接

下面的最后一种方式在绑定两个不同类型的对象时显得很co

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”。

这里就是一个简短的,有意思的方法解决这个问题:

for x in range(101):print"fizz"[x%3*4::]+"buzz"[x%5*4::]or x

集合

除了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 相关文章推荐
python通过pil模块获得图片exif信息的方法
Mar 16 Python
在Python中操作字符串之replace()方法的使用
May 19 Python
Python用list或dict字段模式读取文件的方法
Jan 10 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
python中利用队列asyncio.Queue进行通讯详解
Sep 10 Python
详解django三种文件下载方式
Apr 06 Python
python3+dlib实现人脸识别和情绪分析
Apr 21 Python
Sanic框架配置操作分析
Jul 17 Python
关于Python内存分配时的小秘密分享
Sep 05 Python
python多线程并发及测试框架案例
Oct 15 Python
python 制作python包,封装成可用模块教程
Jul 13 Python
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
Mar 03 Python
完美解决pycharm导入自己写的py文件爆红问题
Feb 12 #Python
python3实现raspberry pi(树莓派)4驱小车控制程序
Feb 12 #Python
python3实现网页版raspberry pi(树莓派)小车控制
Feb 12 #Python
解决Pycharm 导入其他文件夹源码的2种方法
Feb 12 #Python
Tensorflow 模型转换 .pb convert to .lite实例
Feb 12 #Python
tensorflow的ckpt及pb模型持久化方式及转化详解
Feb 12 #Python
关于Tensorflow 模型持久化详解
Feb 12 #Python
You might like
PHP5.2下chunk_split()函数整数溢出漏洞 分析
2007/06/06 PHP
php调用C代码的实现方法
2014/03/11 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
Zend Framework基于Command命令行建立ZF项目的方法
2017/02/18 PHP
PHP等比例压缩图片的实例代码
2018/07/26 PHP
Laravel 集成微信用户登录和绑定的实现
2019/12/27 PHP
自动检查并替换文本框内的字符
2006/06/30 Javascript
jQuery 通过事件委派一次绑定多种事件,以减少事件冗余
2010/06/30 Javascript
jQuery实现向下滑出的二级菜单效果实例
2015/08/22 Javascript
基于AngularJs + Bootstrap + AngularStrap相结合实现省市区联动代码
2016/05/30 Javascript
基于JS实现数字+字母+中文的混合排序方法
2016/06/06 Javascript
AngularJS全局scope与Isolate scope通信用法示例
2016/11/22 Javascript
Spring Boot+AngularJS+BootStrap实现进度条示例代码
2017/03/02 Javascript
详解angularJS自定义指令间的相互交互
2017/07/05 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
js常见遍历操作小结
2019/06/06 Javascript
有趣的JavaScript隐式类型转换操作实例分析
2020/05/02 Javascript
Django1.3添加app提示模块不存在的解决方法
2014/08/26 Python
mac 安装python网络请求包requests方法
2018/06/13 Python
Django基础知识与基本应用入门教程
2018/07/20 Python
flask应用部署到服务器的方法
2019/07/12 Python
python+tkinter实现学生管理系统
2019/08/20 Python
python实现低通滤波器代码
2020/02/26 Python
为你的html5网页添加音效示例
2014/04/03 HTML / CSS
温泉秘密:Onsen Secret
2020/07/06 全球购物
应届生如何写自荐信
2014/01/05 职场文书
英文演讲稿开场白
2014/08/25 职场文书
专题组织生活会发言材料
2014/10/17 职场文书
发票退票证明
2015/06/24 职场文书
庆祝教师节主题班会
2015/08/17 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
2016教师节感恩话语
2015/12/09 职场文书
九年级语文教学反思
2016/03/03 职场文书
laravel ajax curd 搜索登录判断功能的实现
2021/04/17 PHP
基于flask实现五子棋小游戏
2021/05/25 Python
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript