1
reus 2012-08-21 18:13:41 +08:00
四种都会常用到的,说不上先进吧,取向不同而已
array只是就是list和dict合体 |
2
mikale 2012-08-21 18:22:16 +08:00
这是编程风格问题....没有先进和不先进之分..
语言只有高明之分,并无先进淘汰落后这种进化论分法 |
3
ljbha007 2012-08-21 18:23:16 +08:00
能想到的优点就是tuple可以用来返回多个值,比如
(x,y) = getCoords() |
4
reus 2012-08-21 18:26:08 +08:00
php也可以:
list($x, $y) = getCoords() py的话括号不是必须的,写成: x, y = getcoords() 就行 |
5
bhuztez 2012-08-21 18:36:27 +08:00
Python不止四种数据结构吧, 基本的就有bytearray/dict/frozenset/list/set/tuple了,算上标准库,还有collections.namedtuple, collections.defaultdict, collections.deque, collections.OrderedDict, array.array。
|
6
keakon 2012-08-21 18:44:52 +08:00
4种数据结构确实都不可替代且经常使用。你能举个谁是多余的例子么…
另外,方便这点算不算优点呢? [i * i for i in xrange(10)] ([0] * 100)[10:20] |
7
pyKun 2012-08-21 18:46:12 +08:00
个人理解:
1.数据类型的细化有利于精细的编程,tuple可以简单明了的告诉读者这个变量在运行时不可变(某些条件下也事可变的。。。),set严格的吧表示数学意义上的集合,然后个generator是个很有意义的类型,楼主自己研究下 2.dict和list的存在意义类似但不尽相同,list表示一个简单的集合,dict是一个支持增删改查的“数据库”类型,参考下《programming python》 3.一个叫什么来着的思想,大概就是我们只需要让每个子程序仅仅保证完成自己的工作,进而保证总体工作的正常。。。不要把很多不同的任务依赖到一个程序上,类啊,还有这些不同的数据对象也是一样的,如果你天天总是接触到数学意义的集合,你会不会有一天想自己定义一个对象来保证集合里没有重复数据,这样方便你编程,于是python就给了你set |
8
Ranler 2012-08-21 19:53:27 +08:00 2
不懂PHP,但是研究过Lua解释器,Lua也是只有一种table数据结构,既可以当数组用也可以当字典,但是其内部实现还是会对不同的用途开辟不同存储区域,进行不同优化,上层结构只是封装了一下。
数据结构分得越细,通用性越差,但是每种类型特性表现的越好,可以针对不同方向使用和优化。 |
9
dianso 2012-08-21 23:20:23 +08:00
语言没有所谓的优势
|
10
aisk 2012-08-22 14:03:06 +08:00
应该说提供很多种,但是这四种提供语法糖了吧…
|
11
ivenvd 2012-08-22 15:53:57 +08:00
除了用法上,速度也有区别,好象是 frozenset > set > tuple > list > dict ,不确定。
|
12
kernel1983 2012-08-23 23:27:15 +08:00
var in set和in list的速度, 自己可以比较看看
|
13
chuck911 2012-08-24 09:16:26 +08:00
语法丑,array(),array_xx()
当然php5.4对语法优化了 |
15
glasslion 2012-08-24 15:49:03 +08:00
list/tuple 和set/map 的底层实现的数据结构完全不同,不同操作的时间复杂度也不同。
为了优化PHP/JS里四不像的数组,编译器开发人员不知耗费了多少心血 |