适合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基础教程之实现石头剪刀布游戏示例
Feb 11 Python
零基础写python爬虫之使用Scrapy框架编写爬虫
Nov 07 Python
Python实现对字符串的加密解密方法示例
Apr 29 Python
Python爬虫番外篇之Cookie和Session详解
Dec 27 Python
Python从数据库读取大量数据批量写入文件的方法
Dec 10 Python
详解Python网络框架Django和Scrapy安装指南
Apr 01 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
Apr 02 Python
python脚本当作Linux中的服务启动实现方法
Jun 28 Python
python tkinter组件使用详解
Sep 16 Python
python rolling regression. 使用 Python 实现滚动回归操作
Jun 08 Python
python文件排序的方法总结
Sep 13 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 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
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
linux下编译安装memcached服务
2014/08/03 PHP
php链表用法实例分析
2015/07/09 PHP
背景音乐每次刷新都可以自动更换
2007/02/01 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
vue-quill-editor实现图片上传功能
2017/08/08 Javascript
利用three.js画一个3D立体的正方体示例代码
2017/11/19 Javascript
微信小程序实现YDUI的ScrollTab组件
2018/02/02 Javascript
详解项目升级到vue-cli3的正确姿势
2019/01/28 Javascript
vue中h5端打开app(判断是安卓还是苹果)
2021/02/26 Vue.js
Python重新引入被覆盖的自带function
2014/07/16 Python
python实现简单的计时器功能函数
2015/03/14 Python
python中随机函数random用法实例
2015/04/30 Python
Python-嵌套列表list的全面解析
2016/06/08 Python
Python极简代码实现杨辉三角示例代码
2016/11/15 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
2017/09/08 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
2018/01/03 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
2018/02/24 Python
对python Tkinter Text的用法详解
2018/10/11 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
Python 如何测试文件是否存在
2020/07/31 Python
Python SMTP发送电子邮件的示例
2020/09/23 Python
详解Anaconda安装tensorflow报错问题解决方法
2020/11/01 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
英国家庭家具、照明和花园家具购物网站:Furniture123
2018/12/31 全球购物
Aeropostale官网:美国著名校园品牌及青少年服饰品牌
2019/03/21 全球购物
巴西最大的玩具连锁店:Ri Happy
2020/06/17 全球购物
介绍一下linux的文件系统
2015/10/06 面试题
矫正人员思想汇报
2014/01/08 职场文书
幼儿园中班开学寄语
2014/04/03 职场文书
2015年禁毒宣传活动总结
2015/03/25 职场文书
党支部培养考察意见
2015/06/02 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
使用PDF.js渲染canvas实现预览pdf的效果示例
2021/04/17 Javascript
Ajax异步刷新功能及简单案例
2021/11/20 Javascript
MySQL一劳永逸永久支持输入中文的方法实例
2022/08/05 MySQL