java元组和容器什么区别_列表和元组之间有什么区别?

有什么不同?

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

#1楼

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

列表通常是同质的,元组通常是异类的。

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

#2楼

list的值可以随时更改,但是元组的值不能更改。

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

#3楼

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

>>> 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列表和元组中是完全不同的东西。

#4楼

列表和元组之间的区别

文字someTuple = (1,2) someList = [1,2]

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

由于元组操作的大小较小,因此它变得更快一些,但是在您拥有大量元素之前,不必多说。

允许的操作b = [1,2] b[0] = 3 # [3, 2] a = (1,2) a[0] = 3 # Error

这也意味着您不能删除元素或对元组进行排序。 但是,您可以将新元素添加到列表和元组中,唯一的区别是您将通过添加元素来更改元组的IDa = (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

用法

由于列表是可变的,因此不能用作字典中的键,而可以使用元组。a = (1,2) b = [1,2] c = {a: 1} # OK c = {b: 1} # Error

可哈希的元组可哈希,而列表则不可。 哈希函数返回对象的哈希值(如果有)。

DxGLm.png

#5楼

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值