python代码技巧总结(更新至17条)
怎么提高代码水平?答:看牛逼的代码!
牛逼的代码怎么写的?简单,明确,优雅!
怎么简单,明确,优雅?学技巧!
下面搜罗了一些有才格子褂青年的总结,哈哈
1.检查 Python 中的对象
调用 dir() 方法来检查 Python 中的对象
test= [1,3,5,7]
print(dir(test)) [‘__add__’, ‘__class__’, ‘__contains__’, ‘__delattr__’, ‘__delitem__’, ‘__delslice__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘__ge__’, ‘__getattribute__’, ‘__getitem__’, ‘__getslice__’, ‘__gt__’, ‘__hash__’, ‘__iadd__’, ‘__imul__’, ‘__init__’, ‘__iter__’, ‘__le__’, ‘__len__’, ‘__lt__’, ‘__mul__’, ‘__ne__’, ‘__new__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__reversed__’, ‘__rmul__’, ‘__setattr__’, ‘__setitem__’, ‘__setslice__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’, ‘append’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’]
2.存储列表元素到新的变量中
使用列表来初始化多个变量,元素个数与列表长度应该严格相同
testList= [1,2,3] x,y,z= testList print(x,y,z) #-> 1 2 3
3.使用三元操作符来进行条件赋值
[表达式为真的返回值] if [表达式] else [表达式为假的返回值]
#如果 y 是 9,给 x 赋值 10,不然赋值为 20
x = 10 if (y == 9) else 20
# classA 与 classB 是两个类,其中一个类的构造函数会被调用
x = (classA if y == 1 else classB)(param1, param2) def small(a,b,c):
return a if a<= b and a<= c else(b if b<= a and b<= c else c)
print(small(1,0,1))
#0 #我们甚至可以在列表推导中使用三元运算符 [m**2 if m > 10 else m**4 for m in range(50)] #=> [0, 1, 16, 81, 256, 625, 1296, 2401, 4096, 6561, 10000, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400, 441, 484, 529, 576, 625, 676, 729, 784, 841, 900, 961, 1024, 1089, 1156, 1225, 1296, 1369, 1444, 1521, 1600, 1681, 1764, 1849, 1936, 2025, 2116, 2209, 2304, 2401]
4.原地交换两个数字
x,y= 10,20 print(x,y) x,y= y,x print(x,y) #1 (10, 20) #2 (20, 10)
赋值的右侧形成了一个新的元组,左侧立即解析(unpack)那个(未被引用的)元组到变量 <a> 和 <b>。
一旦赋值完成,新的元组变成了未被引用状态并且被标记为可被垃圾回收,最终也完成了变量的交换
5.链状比较操作符
n= 10 result= 1< n< 20 print(result) # True result= 1> n<= 9 print(result) # False
6.打印引入模块的文件路径
> import threading
>
> import socket
>
> print(threading)
>
> print(socket)
>
> \#1- <module ‘threading’ from ‘/usr/lib/python2.7/threading.py’>
>
> \#2- <module ‘socket’ from ‘/usr/lib/python2.7/socket.py’>
7.交互环境下的 “_” 操作符
这是一个我们大多数人不知道的有用特性,在 Python 控制台,不论何时我们测试一个表达式或者调用一个方法,结果都会分配给一个临时变量: _(一个下划线)。
控制台的用法,我自己是深有体会,当时是用阿里云分发送短信,单独写了一个方法py文件,但是调用的时候就不报错,领导给我说再控制台上单独跑一下一个文件,看报错不,如果不报错,就说明这个短信方法没错,是调用的接口代码有问题.
>>> 2+ 1
3
>>> _
3
>>> print_
3
8.字典/集合推导
与我们使用的列表推导相似,我们也可以使用字典/集合推导,它们使用起来简单且有效,下面是一个例子:
testSet= {i *2 for i in range(10)}
testDict= {i: i *i for i in range(10)}
print(testSet)
print(testDict) #set([0, 2, 4, 6, 8, 10, 12, 14, 16, 18])
#{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
注:两个语句中只有一个 <:> 的不同
9.调试脚本
我们可以在 <pdb> 模块的帮助下在 Python 脚本中设置断点,下面是一个例子:
import pdb pdb.set_trace() #我们可以在脚本中任何位置指定 <pdb.set_trace()> 并且在那里设置一个断点,相当简便。
10.简化 if 语句
#我们可以使用下面的方式来验证多个值:
if m in [1,3,5,7]:
#而不是:
if m==1 or m==3 or m==5 or m==7:
#或者,对于 in 操作符我们也可以使用 ‘{1,3,5,7}’ 而不是 ‘[1,3,5,7]’,因为 set 中取元素是 O(1) 操作。
11.使用字典存储选择操作
func={
"sum":lambda x,y:x+y,
"subtract":lambda x,y:x-y
}
print(func['sum'](9,3))
#
12.找到列表中出现最频繁的数
test= [1,2,3,4,2,2,3,1,4,4,4] print(max(set(test),key=test.count)) #-> 4
13.一行代码搜索字符串的多个前后缀
print(“http://www.google.com”.startswith((“http://”,”https://”))) print(“http://www.google.co.uk”.endswith((“.com”,”.co.uk”))) #1-> True #2-> True
14.计数时使用Counter计数对象
#Python的collections类库里有个内置的dict类的子类,是专门来干这种事情的: from collections import Counter
c = Counter('hello world') print(c)
#Counter({'l': 3, 'o': 2, ' ': 1, 'e': 1, 'd': 1, 'h': 1, 'r': 1, 'w': 1}) print(c.most_common(2)) #[('l', 3), ('o', 2)]
15.同时迭代两个列表,俗称拉链函数
nfc = ["Packers", "49ers"]
afc = ["Ravens", "Patriots"]
for teama, teamb in zip(nfc, afc):
print teama + " vs. " + teamb
#>>> Packers vs. Ravens
#>>> 49ers vs. Patriots
16.带索引的列表迭代
teams = ["Packers", "49ers", "Ravens", "Patriots"]
for index, team in enumerate(teams):
print index, team
#>>> 0 Packers
#>>> 1 49ers
#>>> 2 Ravens
#>>> 3 Patriots
17.False == True
#比起实用技术来说这是一个很有趣的事,在python中,True和False是全局变量,因此:
False = True
if False:
print "Hello"
else:
print "World"
#>>> Hello
python代码技巧总结(更新至17条)的更多相关文章
- 介绍几种给你的Python代码加上酷炫的进度条的方式
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 大家好,在下载某些文件的时候你一定会不时盯着进度条,在写代码的时候使用进度 ...
- 一些你需要知道的Python代码技巧
被人工智能捧红的 Python 已是一种发展完善且非常多样化的语言,其中肯定有一些你尚未发现的功能.本文或许能够让你学到一些新技巧. Python 是世界上最流行.热门的编程语言之一,原因很多,比 ...
- 掌握这些Python代码技巧,编程至少快一半!
被人工智能捧红的 Python 已是一种发展完善且非常多样化的语言,其中肯定有一些你尚未发现的功能.本文或许能够让你学到一些新技巧. Python 是世界上最流行.热门的编程语言之一,原因很多,比 ...
- 令你瞠目结舌的 Python 代码技巧
0. for-else 在 Python 中,else 不仅可以与 if 搭配使用,还可以与 for 结合. python答疑 咨询 学习交流群2:660193417### for x in rang ...
- [转] Python 代码性能优化技巧
选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...
- Python代码性能优化技巧
摘要:代码优化能够让程序运行更快,可以提高程序的执行效率等,对于一名软件开发人员来说,如何优化代码,从哪里入手进行优化?这些都是他们十分关心的问题.本文着重讲了如何优化Python代码,看完一定会让你 ...
- Python 代码性能优化技巧(转)
原文:Python 代码性能优化技巧 Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化. ...
- Python 代码性能优化技巧
选择了脚本语言就要忍受其速度,这句话在某种程度上说明了 python 作为脚本的一个不足之处,那就是执行效率和性能不够理想,特别是在 performance 较差的机器上,因此有必要进行一定的代码优化 ...
- 教你一招,提升你Python代码的可读性,小技巧
Python的初学者,开发者都应该知道的代码可读性提高技巧,本篇主要介绍了如下内容: PEP 8是什么以及它存在的原因 为什么你应该编写符合PEP 8标准的代码 如何编写符合PEP 8的代码 为什么我 ...
随机推荐
- python面试题之如何解决验证码的问题,用什么模块,听过哪些人工打码平台?
如何解决验证码的问题,用什么模块,听过哪些人工打码平台? PIL.pytesser.tesseract模块 平台的话有:(打码平台特殊,不保证时效性) 云打码 挣码 斐斐打码 若快打码 超级鹰 本文首 ...
- Neo4j高级应用技术专题系列 - APOC存储过程库-【1】概述
Neo4j高级应用技术专题系列 - APOC存储过程库-[1]概述 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://bl ...
- Java面试宝典(2)Java基础部分
31.String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有? 没有.因为Str ...
- opensns学习
根据ThinkPHP官方文档学习opensns框架 主要看了下opensns所用的单一入口模式的意义. 基础 opensns目录结构 index.php 入口文件 Application 应用目录(含 ...
- POJ-2888 Magic Bracelet(Burnside引理+矩阵优化+欧拉函数+逆元)
Burnside引理经典好题呀! 题解参考 https://blog.csdn.net/maxwei_wzj/article/details/73024349#commentBox 这位大佬的. 这题 ...
- windows下注册ocx控件
OCX 是对象类别扩充组件(Object Linking and Embedding (OLE) Control Extension):是可执行的文件的一种,但不可直接被执行: 是 ocx 控件的扩展 ...
- vue 父子组件数据双向绑定
父组件 <find-search v-model="searchshow"></find-search> 子组件 props: { value: { typ ...
- poj 3294 后缀数组+二分
题目大意: 给定n个字符串,求出现在不小于k个字符串中的最长子串 基本思路: 二分长度,统计个数,一般套路,就是这个跟说好的不一样啊,我非得开2倍才不re,真他妈不爽,先二分找出长度,然后根据长度输出 ...
- Python的历史及介绍
Python的诞生 Python的创始人吉多·范罗苏姆(Guido van Rossum),在1989年12月的圣诞节期间,为了打发时间,决定开发一种新的脚本解释程序,作为ABC语言的继承. 现在,p ...
- Ubuntu图形界面和终端界面切换快捷键
Ctrl+Alt+F1可以从图形界面切换到终端界面. Ctrl+Alt+F7可以从终端界面退出来,重新回到图形界面