Python小贴士集锦

论坛 期权论坛 期权     
Python程序员   2019-7-27 14:38   2870   0

这是一个来自我的Telegram频道@pythonetc的小贴士集锦:
0_0
0_0 是一个完全有效的Python表达式。
[h1]对含有None值的列表排序[/h1]对含有None值的列表进行排序是很有挑战性的:



你或许会尝试先移除None值,在排序之后再将它们添加进来(根据你的任务决定添加在列表的结尾还是开始):


这是一个傻瓜式的办法,好点的解决方法是使用更复杂一点的键:


对于不包含无穷大的类型,你可以通过对元组进行排序来代替:


调用random.seed()方法
当您fork您的进程时,你正在使用的随机种子正在跨进程复制。这可能导致不同线程产生相同的random结果。
为了避免这种情况,你必须在每个进程中手动调用random.seed()。
但是,如果你使用的是multiprocessing模块,情况就不是这样了,它会为你代劳。
举个例子:


结果是这样:


此外,如果你使用的是Python 3.7或更新版本,os.fork也有同样的功能,这要感谢新的at_fork钩子。
以上代码在Python3.7中的输出是:


[h1]加到0后面
[/h1]sum([a,b,c])看起来是和a+b+c等价的,但是实际上,它等价于0+a+b+c。也就是说,对于不支持加到0后面的类型,它就不会运行。


为了解决这一点,你可以提供自定义开始元素来代替0:


sum对float和int类型的求和进行了很好的优化,不过也可以处理任何其他自定义类型。但是,它拒绝对bytes、bytearray和str求和,因为join针对这个操作进行了很好的优化:




[h1]在Jupyter Notebook中进行索引补全[/h1]你可以通过提供_ipython_key_completions_method在Jupyter notebook中定制索引补全。这样,你就可以控制在输入像d["x之后按下Tab键时显示什么:

注意,该方法没有将查找到的字符串作为参数。
英文原文:https://habr.com/en/company/mailru/blog/447212/
译者:Nothing
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:16
帖子:27
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP