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

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

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

7185 次点击
所在节点    Python
68 条回复
miketeam
2016-11-16 18:27:37 +08:00
Swift 笑而不语!不过我也喜欢 python
shyling
2016-11-16 18:29:42 +08:00
什么 list,dict,set,tuple 咯
cheetah
2016-11-16 18:31:51 +08:00
可以看看 collections 里的几个
tinyproxy
2016-11-16 18:35:20 +08:00
骚年,来学个 C 你就知道了。。。看各种代码见过好几种 struct whatever_str; 而且实现的功能都差不太多。
est
2016-11-16 18:38:14 +08:00
不丰富。不如 j8 丰富。
chengluyu
2016-11-16 18:43:03 +08:00
之所以这么说不是因为 Python 能做其他语言不能做的事,而是 Python 有这庞大的开发者社群,开发了数不胜数的库,你只需要 pip install 后 import 就可以直接使用了,而不需要自己从头造轮子。理论上来讲,任何图灵完备的语言描述能力都是的等价的,所以不存在有什么数据结构是 Python 有但是其它语言没有的。

当然,这里讨论的「语言」都是指用于生产环境的命令式语言,不包括一些 DSL 。
dtfm
2016-11-16 18:56:58 +08:00
Python 的数据结构丰富和其他语言应该是等价的,但易用度明显甩开某些语言(此处不指名道姓)一个台阶。

举个栗子:
一个脸滚键盘的字符串 V2EX = 'ebreredfdfhdlfhferdlhgfdnhe'
求出里面包含的字符及字符出现的次数?

Python 用推导式一梭子就出来 v2ex_count = { str : v2ex.count(str) for str in set( V2EX )}

让我回忆起以前用 Java 摇曳的青春
doer233
2016-11-16 19:06:53 +08:00
@dtfm 嗯,这样解释很 pythonic
doer233
2016-11-16 19:08:27 +08:00
@shyling 这些结构其他语言也有的。我刚刚理解的‘丰富’是人无我有呢。
doer233
2016-11-16 19:09:15 +08:00
@chengluyu 嗯。赞同。
ivechan
2016-11-16 19:12:39 +08:00
数据结构跟语言有多大关系....
python 是易用和可读性比较好把.
shyling
2016-11-16 19:35:28 +08:00
@doer233 确实有啊。。但不一定是直接可用的。。。
huntzhan
2016-11-16 19:39:22 +08:00
没有默认平衡树......
dexterzzz
2016-11-16 19:46:55 +08:00
python 写的好就是在写英文一样,就像写伪代码一样。
AyoCross
2016-11-16 20:00:15 +08:00
同意楼上,作为一个低端程序员, python 的可读性让我写代码的时候有种写伪代码的感觉, list tuple set dict 拿来就用,也不用怕野指针、资源没释放导致内存泄漏,比 C/C++爽多了。。
Tahw
2016-11-16 20:15:23 +08:00
@dtfm collection.Counter(V2EX)
Tahw
2016-11-16 20:16:17 +08:00
collections ,少了个 s
dtfm
2016-11-16 20:30:31 +08:00
@Tahw 对,一时没想起来,其实你这个更 Pythonic , collections 是真好用。
liuxingou
2016-11-16 20:35:47 +08:00
数据结构往往是抽象的吧,未必就用语言本身提供的啊,楼上说得好, Python 最大魅力是日常轻度使用的门槛低,周期短,可读性好。
billlee
2016-11-16 22:24:13 +08:00
你去看看 C, 基本数据结构都没有提供;自己写出来的还要么不能泛型,要么就类型不安全。

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

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

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

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

© 2021 V2EX