当人们谈论起 python 时都乐于说 python 优雅,数据结构丰富。本人值接触过 python 语言,没有其他语言的编程经验,请问又那些数据结构是 python 中有而其他语言中没有的。
当人们谈论起 python 时都乐于说 python 优雅,数据结构丰富。本人值接触过 python 语言,没有其他语言的编程经验,请问又那些数据结构是 python 中有而其他语言中没有的。
|
miketeamNov 16, 2016 via iPhone
1
Swift 笑而不语!不过我也喜欢 python
|
|
shylingNov 16, 2016
2
什么 list,dict,set,tuple 咯
|
|
cheetahNov 16, 2016
3
可以看看 collections 里的几个
|
|
tinyproxyNov 16, 2016
4
骚年,来学个 C 你就知道了。。。看各种代码见过好几种 struct whatever_str; 而且实现的功能都差不太多。
|
|
estNov 16, 2016
5
不丰富。不如 j8 丰富。
|
|
6
之所以这么说不是因为 Python 能做其他语言不能做的事,而是 Python 有这庞大的开发者社群,开发了数不胜数的库,你只需要 pip install 后 import 就可以直接使用了,而不需要自己从头造轮子。理论上来讲,任何图灵完备的语言描述能力都是的等价的,所以不存在有什么数据结构是 Python 有但是其它语言没有的。
当然,这里讨论的「语言」都是指用于生产环境的命令式语言,不包括一些 DSL 。 |
|
7
Python 的数据结构丰富和其他语言应该是等价的,但易用度明显甩开某些语言(此处不指名道姓)一个台阶。
举个栗子: 一个脸滚键盘的字符串 V2EX = 'ebreredfdfhdlfhferdlhgfdnhe' 求出里面包含的字符及字符出现的次数? Python 用推导式一梭子就出来 v2ex_count = { str : v2ex.count(str) for str in set( V2EX )} 让我回忆起以前用 Java 摇曳的青春 |
|
11
数据结构跟语言有多大关系....
python 是易用和可读性比较好把. |
|
huntzhanNov 16, 2016
13
没有默认平衡树......
|
|
dexterzzzNov 16, 2016
14
python 写的好就是在写英文一样,就像写伪代码一样。
|
|
AyoCrossNov 16, 2016
15
同意楼上,作为一个低端程序员, python 的可读性让我写代码的时候有种写伪代码的感觉, list tuple set dict 拿来就用,也不用怕野指针、资源没释放导致内存泄漏,比 C/C++爽多了。。
|
|
TahwNov 16, 2016
17
collections ,少了个 s
|
|
liuxingouNov 16, 2016
19
数据结构往往是抽象的吧,未必就用语言本身提供的啊,楼上说得好, Python 最大魅力是日常轻度使用的门槛低,周期短,可读性好。
|
|
billleeNov 16, 2016
20
你去看看 C, 基本数据结构都没有提供;自己写出来的还要么不能泛型,要么就类型不安全。
|
|
guoziyanNov 16, 2016
21
多不多不敢保证,很灵活倒是真的
|
|
myidNov 16, 2016
22
@billlee C 没有提供基本数据结构--这种看法不严谨。 C 语言本身的确没有提供一些常用的数据结构--例如字典、集合等,而 C 语言可用的众多库还是提供了众多的数据结构实现。
C 和 Python 定位不同。 C 追求效率和灵活;赋予程序员极大的自由和特权去使用计算资源和优化计算--这是程序员喜爱的 C 的原因之一。 |
|
zzcflyingNov 16, 2016
23
python 优势在于灵活吧
|
|
reusNov 16, 2016
26
|
|
SenevanNov 16, 2016 via Android
27
内部的 list tuple dict 不用自己实现,不够用就用 collections 的
|
|
introomNov 16, 2016 via Android
28
一点都不丰富,你看那个 heap,要多难用有多难用
|
|
SeanLinNov 17, 2016
32
难道不是因为 python 的有很多第三方的包吗 (如 numpy , pandas....
|
|
HuangLiboNov 17, 2016
33
@reus 你给的是开源产品源码,而非高可用的数据结构库,其实也可以自己把相关代码拿出来直接用,但是每个人都这么去搞只会增加这个世界的熵,,为什么 Github 上没有人去做这个很必要的工作呢
|
|
reusNov 17, 2016
34
@HuangLibo glib 是基础库, apr 是基础库, glibc 是基础库,不是“产品”,是 library ,不是 product 。它们都实现了各种数据结构。直接用,直接链接就能用。而且流行的 linux 发行版都打包了这些库。
这些 C 库早在 github 甚至 git 出现之前就出现了,拿来就能用,还需要什么额外工作? 当然用 C 的话,大多也是做基础软件,例如 Python 解析器这类。一般都喜欢自己实现适合自身的数据结构,而不是用现成的。但并不是说没有现成的数据结构库给你用,不要太小看 C 的生态。 |
|
35
就知道会有人借机黑 Java...以代码写的简短来黑 Java 的,都太年轻太简单
|
|
102400Nov 17, 2016
36
|
|
37
Python 的优势在于"据说程序员一生要写 600 万个花括号,谁先用完谁先走",这才对吧 :-D
|
|
WhyAreYouSoSadNov 17, 2016
39
@hareandlion 233333333333333333333
|
|
41
论结构丰富,我只服 PHP 的数组
|
|
kimboqiNov 17, 2016
43
numpy pandas 你会喜欢的
|
|
liqiazeroNov 17, 2016
44
推荐看一下 《 Python 语言剖析》 陈儒写的, 08 年的书,满篇 C 语言的 Python 底层代码,各种数据结构的底层代码,读懂也就不会纠结于这个问题了。推荐看一下
|
|
keenkillerNov 17, 2016
45
论数据结构,应该是 C++的标准库里面最多吧。。如果加上 boost ,基本常见的都有了
|
|
shell92Nov 17, 2016
46
嗯。。。。。。。
|
|
estNov 17, 2016
47
C 语言里能用一个 hash 已经是中级以上水平的了。
用 C 实现一个 hmac 就得花很多功夫。不用第三方现成的库的话。 |
|
masterqingNov 17, 2016
48
ruby 写的才像英语
|
|
mooncakejsNov 17, 2016
49
@hareandlion py 作者的兼职是卖出 1000w 把尺子
|
|
myidNov 17, 2016
50
就 7 楼的例子,来个 C++的实现, 2 行。怎么样?不逊于 Python 实现吧?行数一样, 2 行。自带数据结构,在 C++的 STL 里称为 map -- 支持范型,类型安全,效率和质量在工程上有口皆碑。
std::map<char, int> v2ex; for (auto const& x : "ebreredfdfhdlfhferdlhgfdnhe") { ++v2ex[x]; } |
|
haocNov 17, 2016
51
python 数据结构真心没有 java 丰富。
|
|
102400Nov 17, 2016
54
@NaVient
算上 import 也是三行吧, Ruby 可以这样 v2ex = 'ebreredfdfhdlfhferdlhgfdnhe' counters =-> s { s.chars.map { |c| [c, s.count(c)] }.to_h } counters.call v2ex |
|
jinfeng333Nov 17, 2016
55
@sun2920989 +1
|
|
estNov 17, 2016
56
|
|
wingyiuNov 17, 2016
58
@sun2920989 2333
|
|
myidNov 17, 2016 via iPhone
59
@est STL 不是第三方库哦 所有不是很古董的 c++编译器都自带 STL 。 boost 特别一点 就不在这里展开了。要比生态环境 (例如数据结构实现) c/c++和 Python 一样强,甚至更强。 26 楼和 34 楼已给了解释和例子。
|
|
billleeNov 17, 2016
62
@HuangLibo 我是两个都很了解才会这样说,看过改过太多低质量的 C 代码了。 C 代码需要程序员的水平很高才能写好。 C++ 就算水平差一些,把它按照 MFC 风格或者 Java 风格来用,至少还比较容易看懂。
|
|
estNov 17, 2016
63
@myid 好吧。咋们来比赛解析 JSON 。 😂。
特别是 key-value 的 type 不确定。比如取一个 key 的值 既可能是 int 又可能是 [int, float, string] 这种的。 用 C++ 撸一个试试? |
|
tracymcladdyNov 17, 2016
64
@dtfm
|
|
Miy4moriNov 17, 2016 via Android
65
Python 丰富?真涨见识……
|
|
msg7086Nov 18, 2016
66
Python 代码量太大了,为了可读性牺牲了简短小巧……
|
|
lyz1990Nov 18, 2016
67
PHP :
count_chars('ebreredfdfhdlfhferdlhgfdnhe',1) |