列表和元组之间有什么区别?

有什么不一样? 函数

元组/列表的优势/缺点是什么? spa


#1楼

列表用于循环,元组用于结构,即"%s %s" %tuplecode

列表一般是同质的,元组一般是异类的。 对象

列表用于可变长度,元组用于固定长度。 排序


#2楼

list的值能够随时更改,可是元组的值不能更改。 内存

优缺点取决于用途。 若是您拥有从未更改过的数据,则必须使用元组,不然list是最佳选择。 get


#3楼

有人提到 ,差别主要是语义上的:人们指望元组和列表表示不一样的信息。 但这远远超出了指导原则。 有些库实际上根据传递的内容而有所不一样。 以NumPy为例(从我要求更多示例的另外一篇文章中复制): io

>>> import numpy as np
>>> a = np.arange(9).reshape(3,3)
>>> a
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])
>>> idx = (1,1)
>>> a[idx]
4
>>> idx = [1,1]
>>> a[idx]
array([[3, 4, 5],
       [3, 4, 5]])

关键是,尽管NumPy可能不是标准库的一部分,但它是一个主要的 Python库,在NumPy列表和元组中是彻底不一样的东西。 import


#4楼

列表和元组之间的区别 变量

  1. 文字

    someTuple = (1,2) someList = [1,2]
  2. 尺寸

    a = tuple(range(1000)) b = list(range(1000)) a.__sizeof__() # 8024 b.__sizeof__() # 9088

    因为元组操做的大小较小,所以它变得更快一些,可是在您拥有大量元素以前,没必要多说。

  3. 容许的操做

    b = [1,2] b[0] = 3 # [3, 2] a = (1,2) a[0] = 3 # Error

    这也意味着您不能删除元素或对元组进行排序。 可是,您能够将新元素添加到列表和元组中,惟一的区别是您将经过添加元素来更改元组的ID

    a = (1,2) b = [1,2] id(a) # 140230916716520 id(b) # 748527696 a += (3,) # (1, 2, 3) b += [3] # [1, 2, 3] id(a) # 140230916878160 id(b) # 748527696
  4. 用法

    因为列表是可变的,所以不能用做字典中的键,而可使用元组。

    a = (1,2) b = [1,2] c = {a: 1} # OK c = {b: 1} # Error
  5. 可哈希的元组可哈希,而列表则不可。 哈希函数返回对象的哈希值(若是有)。

    列表和元组的哈希值。


#5楼

列表是可变的,元组是不可变的。 可变项和不可变项之间的主要区别是,尝试添加项时的内存使用状况。

建立变量时,会将一些固定内存分配给该变量。 若是是列表,则分配的内存将大于实际使用的内存。 例如,若是当前内存分配为100字节,则当您要追加第101个字节时,可能会另外分配100个字节(在这种状况下,总共为200个字节)。

可是,若是您知道不常常添加新元素,则应使用元组。 元组精确分配所需的内存大小,从而节省了内存,尤为是当您使用较大的内存块时。

相关文章
相关标签/搜索