设为首页 收藏本站
查看: 894|回复: 0

[经验分享] Python实用技巧

[复制链接]

尚未签到

发表于 2017-4-22 08:55:35 | 显示全部楼层 |阅读模式
交换变量

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


if 语句在行内

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


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

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-367567-1-1.html 上篇帖子: Python之Window环境搭建 下篇帖子: 安装python
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表