Py学习  »  Python

Python小贴士集锦

Python程序员 • 5 年前 • 306 次点击  

这是一个来自我的Telegram频道@pythonetc的小贴士集锦:

0_0

0_0 是一个完全有效的Python表达式。

对含有None值的列表排序

对含有None值的列表进行排序是很有挑战性的:


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


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


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


调用random.seed()方法

当您fork您的进程时,你正在使用的随机种子正在跨进程复制。这可能导致不同线程产生相同的«random»结果。

为了避免这种情况,你必须在每个进程中手动调用random.seed()。

但是,如果你使用的是multiprocessing模块,情况就不是这样了,它会为你代劳。

举个例子:

结果是这样:

此外,如果你使用的是Python 3.7或更新版本,os.fork也有同样的功能,这要感谢新的at_fork钩子。

以上代码在Python3.7中的输出是:

加到0后面

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

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

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

在Jupyter Notebook中进行索引补全

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

注意,该方法没有将查找到的字符串作为参数。

英文原文:https://habr.com/en/company/mailru/blog/447212/

译者:Nothing

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/31917
 
306 次点击