适合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的Django框架中的表单处理示例
Jul 17 Python
Python简单实现TCP包发送十六进制数据的方法
Apr 16 Python
Python3.7中安装openCV库的方法
Jul 11 Python
解决tensorflow模型参数保存和加载的问题
Jul 26 Python
python绘制随机网络图形示例
Nov 21 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
在 Pycharm 安装使用black的方法详解
Apr 02 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
python如何设置静态变量
Sep 07 Python
基于Pygame实现简单的贪吃蛇游戏
Dec 06 Python
Python基本的内置数据类型及使用方法
Apr 13 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中余数、取余的妙用
2015/06/29 PHP
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
怎么清空javascript数组
2013/05/11 Javascript
javascript验证只能输入数字和一个小数点示例
2013/10/21 Javascript
解决node-webkit 不支持html5播放mp4视频的方法
2015/03/11 Javascript
js根据手机客户端浏览器类型,判断跳转官网/手机网站多个实例代码
2016/04/30 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
2018/03/17 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
通过Kettle自定义jar包供javascript使用
2020/01/29 Javascript
JS定时器如何实现提交成功提示功能
2020/06/12 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
[01:14:31]Secret vs VG 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
python队列queue模块详解
2018/04/27 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
Python字符串格式化输出代码实例
2019/11/22 Python
pandas分组聚合详解
2020/04/10 Python
使用keras实现非线性回归(两种加激活函数的方式)
2020/07/05 Python
容易被忽略的Python内置类型
2020/09/03 Python
Blue Nile台湾:钻石珠宝商,订婚首饰、结婚戒指和精品首饰
2017/11/24 全球购物
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
如何写好自荐信
2014/04/07 职场文书
党员承诺书怎么写
2014/05/20 职场文书
大学生就业求职信
2014/06/12 职场文书
解放思想演讲稿
2014/09/11 职场文书
父亲节寄语大全
2015/02/27 职场文书
2015年乡镇妇联工作总结
2015/05/19 职场文书
创业计划书之服装
2019/10/07 职场文书
Go使用协程交替打印字符
2021/04/29 Golang
教你解决往mysql数据库中存入汉字报错的方法
2021/05/06 MySQL
Vue实现tab导航栏并支持左右滑动功能
2021/06/28 Vue.js