适合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发送伪造的arp请求
Jan 09 Python
使用IPython来操作Docker容器的入门指引
Apr 08 Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
python中OrderedDict的使用方法详解
May 05 Python
Flask数据库迁移简单介绍
Oct 24 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
对python调用RPC接口的实例详解
Jan 03 Python
PyQt弹出式对话框的常用方法及标准按钮类型
Feb 27 Python
selenium获取当前页面的url、源码、title的方法
Jun 12 Python
Python统计分析模块statistics用法示例
Sep 06 Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 Python
在 Python 中利用 Pool 进行多线程
Apr 24 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版自动生成文章摘要
2008/07/23 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
php+ajax注册实时验证功能
2016/07/20 PHP
PHP+mysql实现的三级联动菜单功能示例
2019/02/15 PHP
PHP微商城开源代码实例
2019/03/27 PHP
PHP进阶学习之类的自动加载机制原理分析
2019/06/18 PHP
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
JavaScript实现的一个计算数字步数的算法分享
2014/12/06 Javascript
鼠标经过出现气泡框的简单实例
2017/03/17 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
写一个移动端惯性滑动&amp;回弹Vue导航栏组件 ly-tab
2018/03/06 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
微信小程序云开发之使用云函数
2019/05/17 Javascript
vue  elementUI 表单嵌套验证的实例代码
2019/11/06 Javascript
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python中的五种异常处理机制介绍
2014/09/02 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
浅谈django orm 优化
2018/08/18 Python
python dataframe向下向上填充,fillna和ffill的方法
2018/11/28 Python
Python3 Tkinter选择路径功能的实现方法
2019/06/14 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
html5中localStorage本地存储的简单使用
2017/06/16 HTML / CSS
Ann Taylor官方网站:美国最大的女性产品制造商之一
2016/09/14 全球购物
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
联想印度官方网上商店:Lenovo India
2019/08/24 全球购物
物流管理专业毕业生求职信
2014/03/23 职场文书
社区综治工作汇报
2014/10/27 职场文书
2014年大学班级工作总结
2014/11/14 职场文书
2015年会计人员工作总结
2015/05/22 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python
浏览器常用基本操作之python3+selenium4自动化测试(基础篇3)
2021/05/21 Python
Win10加载疑难解答时出错发生意外错误的解决方法
2022/07/07 数码科技