非常实用的 Python 技巧
点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
本文转自:机器学习算法那些事
函数连续调用
def add(x):class AddNum(int):def __call__(self, x):return AddNum(self.numerator + x)return AddNum(x)print add(2)(3)(5)
# 10
print add(2)(3)(4)(5)(6)(7)
# 27# javascript 版
var add = function(x){var addNum = function(x){return add(addNum + x);};addNum.toString = function(){return x;}return addNum;
}add(2)(3)(5)//10
add(2)(3)(4)(5)(6)(7)//27
默认值陷阱
>>> def evil(v=[]):
... v.append(1)
... print v
...
>>> evil()
[1]>>> evil()
[1, 1]
读写csv文件
import csvwith open('data.csv', 'rb') as f:reader = csv.reader(f)for row in reader:print row# 向csv文件写入
import csvwith open( 'data.csv', 'wb') as f:writer = csv.writer(f)writer.writerow(['name', 'address', 'age']) # 单行写入data = [( 'xiaoming ','china','10'),( 'Lily', 'USA', '12')]writer.writerows(data) # 多行写入
数制转换
>>> int('1000', 2)
8>>> int('A', 16)
10
格式化 json
echo'{"k": "v"}' | python-m json.tool
list 扁平化
list_ = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
[k for i in list_ for k in i] #[1, 2, 3, 4, 5, 6, 7, 8, 9]
import numpy as np
print np.r_[[1, 2, 3], [4, 5, 6], [7, 8, 9]]import itertools
print list(itertools.chain(*[[1, 2, 3], [4, 5, 6], [7, 8, 9]]))
sum(list_, [])
flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) is list else [x]
flatten(list_)
list 合并
>>> a = [1, 3, 5, 7, 9]
>>> b = [2, 3, 4, 5, 6]
>>> c = [5, 6, 7, 8, 9]
>>> list(set().union(a, b, c))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
出现次数最多的 2 个字母
from collections import Counter
c = Counter('hello world')
print(c.most_common(2)) #[('l', 3), ('o', 2)]
谨慎使用
eval("__import__('os').system('rm -rf /')", {})
置换矩阵
matrix = [[1, 2, 3],[4, 5, 6]]
res = zip( *matrix ) # res = [(1, 4), (2, 5), (3, 6)]
列表推导
[item**2 for item in lst if item % 2]
map(lambda item: item ** 2, filter(lambda item: item % 2, lst))
>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']
排列组合
>>> for p in itertools.permutations([1, 2, 3, 4]):
... print ''.join(str(x) for x in p)
...
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321>>> for c in itertools.combinations([1, 2, 3, 4, 5], 3):
... print ''.join(str(x) for x in c)
...
123
124
125
134
135
145
234
235
245
345
>>> for c in itertools.combinations_with_replacement([1, 2, 3], 2):
... print ''.join(str(x) for x in c)
...
11
12
13
22
23
33
>>> for p in itertools.product([1, 2, 3], [4, 5]):
(1, 4)
(1, 5)
(2, 4)
(2, 5)
(3, 4)
(3, 5)
默认字典
>>> m = dict()
>>> m['a']
Traceback (most recent call last):File "<stdin>", line 1, in <module>
KeyError: 'a'
>>>
>>> m = collections.defaultdict(int)
>>> m['a']
0
>>> m['b']
0
>>> m = collections.defaultdict(str)
>>> m['a']
''
>>> m['b'] += 'a'
>>> m['b']
'a'
>>> m = collections.defaultdict(lambda: '[default value]')
>>> m['a']
'[default value]'
>>> m['b']
'[default value]'
反转字典
>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> m
{'d': 4, 'a': 1, 'b': 2, 'c': 3}
>>> {v: k for k, v in m.items()}
{1: 'a', 2: 'b', 3: 'c', 4: 'd'}
更多
https://www.zhihu.com/question/27376156
stackoverflow.com/questions/101268/hidden-features-of-python
https://zhuanlan.zhihu.com/p/22909144
https://www.zhihu.com/question/29995881
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程,即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。
下载2:Python视觉实战项目52讲
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
下载3:OpenCV实战项目20讲
在「小白学视觉」公众号后台回复:OpenCV实战项目20讲,即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
非常实用的 Python 技巧相关推荐
- Python五种实用的小技巧
本文经"机器之心"授权,禁止二次转载. 作者:Peter Nistru 机器之心编译 参与:思 最开始学 Python 时,如果我能掌握这些方法,那么代码看起来会更加优美. 在本文 ...
- python将2个列表list合并到1个列表使用appenden_【新手入门】20个很实用的 Python 学习小技巧...
本文为大家介绍20个值得记住的 Python 技巧,可以提升您编程技巧, 并为您节省大量时间.在平常编程过程中,以下技巧大多非常有用. 1 字符串反转 使用切片反转字符串. str1="qw ...
- Python培训教程分享:“高效实用” 的Python工具库
作为一名合格Python技术员,对于Python工具库的使用是少不了的,本期Python培训教程就为大家分享的是""高效实用" 的Python工具库",希望能够 ...
- 程序员必知的20个Python技巧
作者 | Duomly 译者 | 弯月,编辑 | 郭芮 出品 | CSDN(ID:CSDNnews) Python是一门流行且应用广泛的通用编程语言,其应用包括数据科学.机器学习.科学计算等领域,以及 ...
- 你需要知道的20个常用的Python技巧
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|机器学习算法那些事 Python的可读性和简单性是其广受 ...
- 程序员必知的 20 个 Python 技巧!
本文将向你展示20条非常实用的Python使用技巧. 作者 | Duomly 译者 | 弯月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python是一门流行且应用广 ...
- Excel文件 实用操作小技巧
Excel文件实用 操作小技巧 目录 1.为Excel文件 添加打开密码 审阅 - 保护工作簿 - 保护结构和窗口-输入密码点击确定 2.为Excel文件 添加作者信息 在Exce文件 图标上右键 ...
- 兵贵神速!掌握这10个Python技巧,让你代码工作如鱼得水
1000个读者心中有1000个哈姆雷特,要问1000个程序员"什么才是最好的语言",Java.Python.PHP.C++ 也都有自己的位置.但要问编程语言流行指数之王非,那真的非 ...
- 兵贵神速 掌握这10个python技巧,让你代码工作如鱼得水
全文共4433字,预计学习时长13分钟 图源:Unsplash 1000个读者心中有1000个哈姆雷特,要问1000个程序员"什么才是最好的语言",Java.Python.PHP. ...
最新文章
- idea中properties配置文件没有代码提示及代码高亮问题解决方案
- lastpass安卓最新版_LastPass
- 在同一局域网内的同一工作组内登陆其中的机器时显示输入网络密码对话框
- java 火星坐标转wgs84_js中火星坐标、百度坐标、WGS84坐标转换实现方法示例
- JVM虚拟机-Class文件之魔数
- request_irq与request_threaded_irq
- python入门先学什么-所以学完 Python 入门课的孩子到底能干啥?
- 几个查询优化小技巧,可以大大提高效率并解决一些问题
- 股票历史数据-历史数据股票工具
- 2021年武大计算机学院研究生,武汉大学
- 殡仪馆计算机控制火化机,殡仪馆火化炉进行尾气处理
- 坐标转换—高斯正反算(附测量助理最新版软件下载)
- 微信小程序实现点击按钮退出功能
- 【autojs】Auto.js Pro陌陌点赞全脚本源代码
- 视频聊天ViscomSoft SDK ActiveX 4.0
- c语言程序设计工资纳税系统,C语言程序设计纳税工资系统
- 力软:九年沉淀,从呱呱坠地到风华少
- 黑马ssm学习笔记-企业权限管理系统
- ERP软件的价格设计
- 高中计算机会考vb试题,信息技术高中会考VB模块操作题试题库