首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python小贴士集锦

这是一个来自我的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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190421A028KS00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券