请问python中的tuple是不是就是immutable list(ImList)
如果从字面理解immutable list,那么就是了,因为Python tuple的内容是不能增、删、改的。
■网友
tuple是tuple!list是list!相对list来说,tuple的最大的区别就是元素不可变。都是tuple的遍历速度比list快,要不然要tuple有鸟用?所以你可以说:tuple is similar to the immutable list..但是不可以说:tuple is the immutable list.发现一个有趣的现象:def func(a): a = 0b = (, )fun(b)print b结果是: (, )tuple竟然改动了。
■网友
首先tuple是没法保证不变的In : a = (,)In : a = 2In : aOut: (,)如果需要immutable list 可以看 pysistenceIn : from pysistence import make_listIn : make_list(1, make_list(2, 3))Out: PList()])In : pl = make_list(1, make_list(2, 3))In : plOut: PList()])In : pl=1---------------------------------------------------------------------------TypeError Traceback (most recent call last)\u0026lt;ipython-input-19-3649688295f8\u0026gt; in \u0026lt;module\u0026gt;()----\u0026gt; 1 pl=1TypeError: \u0026#39;PList\u0026#39; object does not support item assignment
■网友
其实基本上在静态类型语言里才需要操心tuple和list的区别这类的问题。你看lisp从不操心数据结构。而且immutable list并不是真的就每操作一次就要生成一个新拷贝了,实际上他只是在语法上immutable而已,编译器完全可以根据数据结构类型给你优化掉。比如,你知道为啥scala的immutable list的默认::操作是加在头部而不是尾部的吗?因为他真的就是连在了原来的list的头部,而原来的list的引用还连在现在列表第二个的位置。因此,这个操作其实是O(1)的。这就是persistent collection.(当然,你的list里的类型也得是immutable的才行,规避了黄凯焕那个问题。)tree也可以进行类似的处理,改写部分路径,剩下的还连在原tree上。所以说,immutable的这些数据结构的类型不是摆着好看的,它们和mutable的那些版本一样是对应着相应的数据结构的。从这个意义上说,python的tuple(当然,别的语言的tuple的意思不一定一样)就相当于一个immutable array。如果从语法的角度来说,跟immutable list也没什么不同,但是确实对应着不同的数据结构。
推荐阅读
- 鄂温克冬季马赛-30℃极寒开赛:寒冬中的火热派对
- 大雪@大雪腌肉 适当进补 今日大雪
- 银行高管的薪酬结构图表最新的,请问在哪里可以收集
- |电商事业中的“闪光少年”
- 在上海陆家嘴附近工作,请问去哪边租房会比较好
- 坐标合肥,请问在哪里能捕捉到程序员这种生物他们大都出现在哪里呢
- 怎样成为一名合格的Python程序员?
- 孕妇到了预产期,小孩还没有入盆,请问是该等下去还是直接剖腹产
- python 爬虫,咋获得输入验证码之后的搜索结果
- 想做手机网游代充,请问要去哪里找货源
