适合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的while循环中使用else以及循环嵌套的用法
Oct 14 Python
Python输入二维数组方法
Apr 13 Python
python读取文本中的坐标方法
Oct 14 Python
pyspark操作MongoDB的方法步骤
Jan 04 Python
Python函数的定义方式与函数参数问题实例分析
Dec 26 Python
浅谈Python中re.match()和re.search()的使用及区别
Apr 14 Python
keras实现VGG16方式(预测一张图片)
Jul 07 Python
Python字典取键、值对的方法步骤
Sep 30 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
能让Python提速超40倍的神器Cython详解
Jun 24 Python
Python中的tkinter库简单案例详解
Jan 22 Python
python+opencv实现目标跟踪过程
Jun 21 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
PHP file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
用PHP ob_start()控制浏览器cache、生成html实现代码
2010/02/16 PHP
php+mysql实现用户注册登陆的方法
2015/01/03 PHP
PHP cookie,session的使用与用户自动登录功能实现方法分析
2019/06/05 PHP
laravel Validator ajax返回错误信息的方法
2019/09/29 PHP
传递参数的标准方法(jQuery.ajax)
2008/11/19 Javascript
jquery 子窗口操作父窗口的代码
2009/09/21 Javascript
快速掌握jquery分页插件jqPaginator的使用方法
2017/08/09 jQuery
微信小程序开发animation心跳动画效果
2017/08/16 Javascript
详解webpack2+node+react+babel实现热加载(hmr)
2017/08/24 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
vue如何将v-for中的表格导出来
2018/05/07 Javascript
mpvue跳转页面及注意事项
2018/08/03 Javascript
Vue项目vscode 安装eslint插件的方法(代码自动修复)
2020/04/15 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
[06:04]DOTA2英雄梦之声Vol19卓尔游侠
2014/06/20 DOTA
Python 3.x 新特性及10大变化
2015/06/12 Python
Python编程实现删除VC临时文件及Debug目录的方法
2017/03/22 Python
Python实现删除列表中满足一定条件的元素示例
2017/06/12 Python
Python线程同步的实现代码
2018/10/03 Python
python搜索包的路径的实现方法
2019/07/19 Python
详解python中index()、find()方法
2019/08/29 Python
python 使用shutil复制图片的例子
2019/12/13 Python
Python API len函数操作过程解析
2020/03/05 Python
Python figure参数及subplot子图绘制代码
2020/04/18 Python
Pandas将列表(List)转换为数据框(Dataframe)
2020/04/24 Python
法国在线药房:1001Pharmacies
2021/03/07 全球购物
汉米尔顿手表官网:Hamilton
2020/09/13 全球购物
行政经理岗位职责
2013/11/09 职场文书
学生会部长竞聘书
2014/03/31 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
销售辞职信范文
2015/03/02 职场文书
2016春节家属慰问信
2015/03/25 职场文书
详解Java线程池是如何重复利用空闲线程的
2021/06/26 Java/Android
剑指Offer之Java算法习题精讲二叉树专项训练
2022/03/21 Java/Android