添加追加更新并在python中扩展
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了添加追加更新并在python中扩展,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2198字,纯文字阅读大概需要4分钟。
内容图文
![添加追加更新并在python中扩展](/upload/InfoBanner/zyjiaocheng/751/1cf264197a82475abe2c65fc9a4b00d4.jpg)
有没有文章或论坛讨论或某些地方解释为什么列表使用append / extend但设置和dicts使用添加/更新.
我经常发现自己将列表转换为集合,这种差异使得这非常繁琐,所以对于我的个人理智,我想知道合理化是什么.
当我们迭代开发时,需要在这些之间进行转换.随着时间的推移,程序的结构会变形,各种结构会增加并失去排序和重复等要求.
例如,一些以列表中的无序内容开头的东西可能会提出不需要重复的要求,因此需要转换为集合.
所有这些更改都需要查找和更改添加/附加和扩展/更新相关结构的所有位置.
所以我很想看到导致这种语言选择的原始讨论,不幸的是我没有用谷歌搜索它.
解决方法:
append有一个流行的定义“添加到最后”,并且扩展可以类似地读取(在细微差别,它意味着“……超出某一点”);集合没有“结束”,也没有任何方式在它们内部或“在它们的边界”指定一些“点”(因为没有“边界”!),因此建议可以执行这些操作将是非常误导的.
x.append(y)总是将len(x)增加一个(y是否已经在列表x中);没有这样的断言适用于s.add(z)(s的长度可以增加或保持不变).而且,在这些片段中,y可以有任何值(即,追加操作永远不会失败[除了你的内存耗尽的异常情况]) – 再次没有关于z(必须是可以清除的)这样的断言否则添加操作失败并引发异常).类似的差异适用于扩展与更新.对于具有如此截然不同的语义的操作使用相同的名称确实会产生误导.
it seems pythonic to just use a list
on the first pass and deal with the
performance on a later iteration
性能是最不重要的!列表支持重复项目,订购和任何项目类型 – 设置保证项目唯一性,没有订单概念和需求项目可用性. Pythonic没有使用列表(加上对副本等的愚蠢检查)代表一套 – 性能与否,“说出你的意思!”是Pythonic方式;-). (在诸如Fortran或C之类的语言中,作为内置容器类型的所有内容都是数组,如果您需要避免使用附加库,则可能必须执行此类“mental mapping”;在Python中,没有这样的需要).
编辑:OP在评论中断言他们从一开始就不知道(例如)在某个算法中不允许重复(奇怪,但是,无论如何) – 他们正在寻找一种无痛的方式来制作一个列表一旦他们确实发现副本是不好的(并且,我将添加:顺序无关紧要,项目可以清除,索引/切片不需要等).如果Python的集合对于所讨论的两个方法具有“同义词”,那么为了获得完全相同的效果:
class somewhatlistlikeset(set):
def append(self, x): self.add(x)
def extend(self, x): self.update(x)
当然,如果唯一的更改是在创建集合(以前是列表创建),则代码可能更难以遵循,失去了有用的清晰度,因此使用add vs append允许任何阅读代码的人知道“本地“对象是否是一个集合与一个列表……但是,这也是上述”完全相同的效果“的一部分! – )
内容总结
以上是互联网集市为您收集整理的添加追加更新并在python中扩展全部内容,希望文章能够帮你解决添加追加更新并在python中扩展所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。