您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

为什么在Python中不能统一处理集合?

5b51 2022/1/14 8:22:23 python 字数 2994 阅读 544 来源 www.jb51.cc/python

集合和列表在 Python中的处理方式不同,似乎没有统一的方法可以同时使用它们.例如,使用add方法将项添加到集合中,对于列表,使用append方法完成.我知道这背后有不同的语义,但也存在常见的语义,并且通常与某些集合一起使用的算法更多地关注共性而不是差异. C STL表明这可以工作,为什么Python中没有这样的概念? 编辑:在C中,我可以使用output_iterator将值存储在(几乎)任意

概述

编辑:在C中,我可以使用output_iterator将值存储在(几乎)任意类型的集合中,包括列表和集合.我可以编写一个算法,它将这样的迭代器作为参数并将元素写入其中.然后,该算法完全不知道支持迭代器的容器(或其他设备,可能是文件)的类型.如果后备容器是忽略重复项的集合,那么这是调用者的决定.我的具体问题是,现在我已经多次使用过,例如我用了一个特定任务的列表,然后决定该集更合适.现在我必须更改附加内容添加到我的代码中的几个位置.我只是想知道为什么Python没有这种情况的概念.

您应该能够使用相同的方法名称插入任何通用插入有意义的容器(例如,排除dict).插入应该有一致的通用名称,例如.添加,对应于set.add和list.append,这样您就可以添加到容器中而无需关心插入的内容.

在不同类型中对此操作使用不同的名称是无偿的不一致,并且设置了较差的基本标准:库应该鼓励用户容器使用一致的API,而不是为每个基本容器提供大部分不兼容的API.

也就是说,在这种情况下,它通常不是一个实际问题:大多数情况下,函数的结果是项目列表,将其实现为生成器.它们允许一致地(从函数的角度)处理这两者,以及其他形式的迭代:

def foo():
    yield 1
    yield 2
    yield 3

s = set(foo())
l = list(foo())
results1 = [i*2 for i in foo()]
results2 = (i*2 for i in foo())
for r in foo():
    print r

总结

以上是编程之家为你收集整理的为什么在Python中不能统一处理集合?全部内容,希望文章能够帮你解决为什么在Python中不能统一处理集合?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶