Python Tricks
python tricks,持续更新……
启动服务器
|
|
*args
和**kwargs
介绍
*args
是可变的positional arguments列表
**kwargs
是可变的keyword arguments列表
*args
必须位于**kwargs
之前
如果说在函数定义的位置使用*args
和**kwargs
是一个将参数pack的过程,那么在函数调用的时候就是一个将参数unpack的过程了
参考
https://kodango.com/variable-arguments-in-python
一行式
|
|
参考
https://eastlakeside.gitbook.io/interpy-zh/onelines
Python的itertools模板
参考: http://wklken.me/posts/2013/08/20/python-extra-itertools.html https://blog.csdn.net/fuxuemingzhu/article/details/79869193
可以先看下 itertools.combinations(points, 3)
|
|
经典题目: https://leetcode-cn.com/problems/ambiguous-coordinates/description/
Python中定义二维数组
引入
昨天做算法题目的时候遇到一个贼坑的Python语法问题,就跟我以前开始不知道Python里面的字符串不可更改一样。
下面直接来看一个例子吧:
|
|
对于上面这个例子,我心里的预期结果是:
|
|
但是很遗憾我得到的结果却是:
|
|
为什么会这样呢?究其原因是因为Python的语法特性,直接来看官方文档的解释
What has happened is that
[[]]
is a one-element list containing an empty list, so all three elements of[[]] * 3
are references to this single empty list. Modifying any of the elements oflists
modifies this single list.
所以创建二维数组时,应该按照以下方法创建:
|
|
参考: https://www.cnblogs.com/woshare/p/5823303.html
延伸
新手常犯的错误:直接google新手常犯的错误
字典(dict)
基础使用
Python 中的动态数组是如何使用的 获取字典的键值和values
dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值 参考:菜鸟教程
按key值或按value值排序
下面是按key对字典进行排序
|
|
一个有趣的python排序模块:bisect
参考:https://www.cnblogs.com/skydesign/archive/2011/09/02/2163592.html
python 中swap
|
|
Python模块包
可以将功能相似的模块放在同一个文件夹(比如说this_dir)中,构成一个模块包。
通过
|
|
引入this_dir文件夹中的module模块。
该文件夹中必须包含一个__init__.py
的文件,提醒Python,该文件夹为一个模块包。__init__.py
可以是一个空文件。
Python排序
Python对二维数组进行排序
|
|
参考: https://blog.csdn.net/hanshileiai/article/details/44241385
yield用法
简介
next()
send()
yield from
的用法
参考:
http://youchen.me/2017/02/10/Python-main-use-for-yield-from/
http://blog.gusibi.com/post/python-coroutine-yield-from/
参考: https://www.jianshu.com/p/d676543ccdbb https://zhuanlan.zhihu.com/p/23276711 http://pyzh.readthedocs.io/en/latest/the-python-yield-keyword-explained.html
python zip()
关于zip的使用
|
|
例子: https://leetcode.com/problems/car-fleet/solution/
牛逼哄哄的注释
|
|
列出当前目录下所有文件和目录名
|
|
简易进度条
|
|
\r
回到一行的头部
example:
|
|
参考: http://python.jobbole.com/83692/
collections
|
|
hostname->IP
|
|
Py 文件转成 EXE 文件
参考:https://www.youtube.com/watch?v=UZX5kH72Yx4&t=28s
这里我使用这个项目作为示例:https://github.com/yangshun/2048-python
|
|
下面将生成的 exe 文件移动到项目的主目录下,然后生成 zip 文件
使用 NSIS 生成最终的可以在 windows 上安装的 exe 文件就可以了
单下划线和双下划线
单下划线
单下划线前缀名称(例如_pythonPoint): 这表示这是一个保护成员(属性或者方法),只有类对象和子类对象自己能访问到这些变量,是用来指定私有变量和方法的一种方式(约定而已)。
单下划线后缀名称: 通常用于和Python关键词区分开来
双下划线
“双下划线” 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。