栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Pythonic交换?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Pythonic交换?

我可能会在示例代码中更改一件事:如果您要使用一些长名称(例如

self.memberlist
再次使用over),通常更容易将别名(“赋值”)命名为短名称。因此,例如,代替冗长而又难以阅读的内容:

self.memberlist[someindexA], self.memberlist[someindexB] = self.memberlist[someindexB], self.memberlist[someindexA]

您可以编写以下代码:

L = self.memberlistL[someindexA], L[someindexB] = L[someindexB], L[someindexA]

请记住,Python是按引用工作的,因此L引用的对象与完全相同

self.memberlist
,而不是副本(通过相同的标记,无论列表有多长,赋值都非常快,因为无论如何它都不会被复制-
只是一个更多参考)。

我认为并不需要进一步的复杂化,尽管当然很容易想到一些奇特的复杂性,例如(对于a,b“正常”索引

>=0
):

def slicer(a, b):  return slice(a, b+cmp(b,a), b-a), slice(b, a+cmp(a,b), a-b)back, forth = slicer(someindexA, someindexB)self.memberlist[back] = self.memberlist[forth]

我认为弄清楚这些“高级”用法是一种不错的自负,有益的心理锻炼和很好玩的乐趣-
我建议感兴趣的读者在大体上理解了这些概念之后,着重研究它们的作用以及它们

+cmp
如何使事物起作用(a> b,a <b,a ==
b)的三种可能性[[不是负数,但是-
为什么不呢?切片器将需要更改以解决此问题?]]。但是,在生产代码中使用这种奇特的方法通常会显得过大且毫无根据,与简单的方法相比,使事情变得更加模糊和难以维护。

记住,简单胜于复杂!



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/625706.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号