都说 python 数据结构丰富,丰富在哪?

2016-11-16 18:25:49 +08:00
 doer233

当人们谈论起 python 时都乐于说 python 优雅,数据结构丰富。本人值接触过 python 语言,没有其他语言的编程经验,请问又那些数据结构是 python 中有而其他语言中没有的。

7200 次点击
所在节点    Python
68 条回复
guoziyan
2016-11-16 22:40:42 +08:00
多不多不敢保证,很灵活倒是真的
myid
2016-11-16 22:45:06 +08:00
@billlee C 没有提供基本数据结构--这种看法不严谨。 C 语言本身的确没有提供一些常用的数据结构--例如字典、集合等,而 C 语言可用的众多库还是提供了众多的数据结构实现。

C 和 Python 定位不同。 C 追求效率和灵活;赋予程序员极大的自由和特权去使用计算资源和优化计算--这是程序员喜爱的 C 的原因之一。
zzcflying
2016-11-16 23:07:00 +08:00
python 优势在于灵活吧
HuangLibo
2016-11-16 23:07:25 +08:00
@myid C 的哪些库给了高可用的高级数据结构的实现,可以丢给链接吗
mingyun
2016-11-16 23:14:58 +08:00
@dtfm nice
reus
2016-11-16 23:26:17 +08:00
Senevan
2016-11-16 23:32:47 +08:00
内部的 list tuple dict 不用自己实现,不够用就用 collections 的
introom
2016-11-16 23:43:29 +08:00
一点都不丰富,你看那个 heap,要多难用有多难用
billlee
2016-11-17 00:11:03 +08:00
@myid C 语言本身的限制让泛型的数据结构实现都要用类型不安全的 void*, 这个东西在大型项目中就是噩梦。
HuangLibo
2016-11-17 00:15:43 +08:00
@billlee 而大型项目恰有很多用的 C ,而且是顶级大型项目。
billlee
2016-11-17 00:23:56 +08:00
@HuangLibo 大多是没有 C++ 的时代遗留下来的
SeanLin
2016-11-17 00:42:01 +08:00
难道不是因为 python 的有很多第三方的包吗 (如 numpy , pandas....
HuangLibo
2016-11-17 00:49:26 +08:00
@reus 你给的是开源产品源码,而非高可用的数据结构库,其实也可以自己把相关代码拿出来直接用,但是每个人都这么去搞只会增加这个世界的熵,,为什么 Github 上没有人去做这个很必要的工作呢
reus
2016-11-17 01:08:13 +08:00
@HuangLibo glib 是基础库, apr 是基础库, glibc 是基础库,不是“产品”,是 library ,不是 product 。它们都实现了各种数据结构。直接用,直接链接就能用。而且流行的 linux 发行版都打包了这些库。
这些 C 库早在 github 甚至 git 出现之前就出现了,拿来就能用,还需要什么额外工作?
当然用 C 的话,大多也是做基础软件,例如 Python 解析器这类。一般都喜欢自己实现适合自身的数据结构,而不是用现成的。但并不是说没有现成的数据结构库给你用,不要太小看 C 的生态。
hinkal
2016-11-17 01:40:59 +08:00
就知道会有人借机黑 Java...以代码写的简短来黑 Java 的,都太年轻太简单
102400
2016-11-17 03:35:32 +08:00
@dtfm
@doer233

Ruby: ???

v2ex = 'ebreredfdfhdlfhferdlhgfdnhe'
v2ex.chars.map { |x| [x, v2ex.count(x)] }.to_h

哼,有啥了不起的~
hareandlion
2016-11-17 09:02:39 +08:00
Python 的优势在于"据说程序员一生要写 600 万个花括号,谁先用完谁先走",这才对吧 :-D
NaVient
2016-11-17 09:17:42 +08:00
@102400 Python 可以 Collections.counter(v2ex)
WhyAreYouSoSad
2016-11-17 09:18:53 +08:00
@hareandlion 233333333333333333333
HuangLibo
2016-11-17 09:28:28 +08:00
@billlee 你这就太不了解 C 语言了,说的好像快被历史淘汰了一样, C 和 C++的使用场景不一样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/320992

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX