列表和元组的区别
- 列表(list)
列表一旦创建了我们就可以根据自己的需要随意改变他的内容;
>>> list=[1,2,3,4,5,6] >>> list[0]=8 >>> list[6]=0 >>> list [8, 2, 3, 4, 5, 6]可以为列表添加新的数据:
>>> len(list) #查看这个列表中有多少数据 6 >>> list.append(7) #在列表尾插入 >>> list [8, 2, 3, 4, 5, 6, 7] >>> len(list) 7 >>> list.insert(3,10) #在列表任意位置插入数据,第一个参数表示索引,第二个参数表示插入的数据 >>> list [8, 2, 3, 10, 4, 5, 6, 7] >>>
这是因为list支持resize操作,当有新的数据添加进入列表时,如果大于当前的容量,就会开辟新的list,将原有的元素复制到新的list中,然后将原有的list删除。
注意 利用切片取得的数据类型还会是list
>>> type(list[:2])
- 元组(Tuple)
元组是固定不可变的。这意味着一但元组被声明,他的内容无法被修改,大小也无法改变。
>>> tuple=(1,2,3,4) >>> tuple (1, 2, 3, 4) >>> tuple[2] 3 >>> tuple[2]=8 Traceback (most recent call last): File "", line 1, in tuple[2]=8 TypeError: 'tuple' object does not support item assignment 虽然tuple不支持改变大小,但是我们可以将两个tuple合并起来。
>>> t=(5,6,8,6) >>> t+tuple (5, 6, 8, 6, 1, 2, 3, 4)与list.append比较list添加元素的时间复杂读为O(1),而tuple这种方式的时间复杂度为O(n)
- 总结
- 列表是动态数组,它们不可变且可以重设长度(改变其内部元素的个数)。
- 元组是静态数组,它们不可变,且其内部数据一旦创建便无法改变。
- 元组缓存于Python运行时环境,这意味着我们每次使用元组时无须访问内核去分配内存。
列表元组字典的一些区别
1、列表list:有序,可变。
2、元组tuple:有序,不可变。
3、字典dict:无序,字典的key是不可变的,值是可变的;在python中字符串,数字,元组都是不可变的对象。
4、序列:列表,元组和字符串都序列;即成员有序排列,可以通过下标访问,可以进行切片操作。字符串(普通字符串和unicode字符串)
5、集合:没有顺序的简单对象的聚集。可以检查成员是否存在,是否是另一个集合的子集,得到两个集合的交集等等
6、复制一个列表或者类似的序列或者其他复杂对象,那么必须使用切片操作符来去的拷贝。当你创建一个对象并将它赋值给一个变量的时候,这个变量仅仅引用那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存。这被称作名称到对象的绑定。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/201988.html原文链接:https://javaforall.net
