Python 中 列表、元组和数组的区别

Python 中 列表、元组和数组的区别
最新回答
如梦如幻

2026-03-20 20:50:51

Python 中列表、元组和数组的区别

一、列表(List)

  • 定义与表示:列表以方括号[]包围,元素以逗号,分隔,如L = [1, 2, 3]。
  • 元素类型:列表可以包含任何数据类型,包括另一个列表。
  • 可变性:列表是可变序列,支持对元素的增、删、改操作。
  • shape 属性:列表没有shape属性,其大小通过len(L)计算元素个数。
  • 运算符与函数:

    长度:len(L)

    迭代:for x in L: print(x)

    元素存在性:x in L

    内置函数:cmp(L1, L2)、len(L)、max(L)、min(L)、list(S)(将元组转换为列表)

    方法:L.append(obj)、L.count(obj)、L.extend(seq)、L.index(obj)、L.insert(index, obj)、L.pop(obj=L[-1])、L.remove(obj)、L.reverse()、L.sort()

  • 切片操作:支持切片操作,如example[4:8]表示从索引4到索引7(左闭右开)的子列表。

二、元组(Tuple)

  • 定义与表示:元组以圆括号()包围,元素以逗号,分隔,如T = (1, 2, 3)。
  • 元素类型:元组可以包含任何数据类型,包括另一个元组。
  • 可变性:元组是不可变序列,一旦创建,其元素不能增、删、改。
  • shape 属性:元组没有shape属性,其大小通过len(T)计算元素个数。
  • 运算符与函数:

    长度:len(T)

    连接:+

    复制:*

    元素存在性:in

    迭代:for x in T: print(x)

    内置函数:cmp、len、max、min、tuple(seq)(将列表转换为元组)

  • 索引访问:可以通过索引访问元组中的元素,如o[0]表示访问元组o的第一个元素。
  • 切片操作:支持切片操作,但切片后的结果仍然是元组。

三、数组(Array - NumPy)

  • 定义与表示:Python中没有内置的数组类型,但NumPy库提供了数组类型。数组以方括号[]包围,元素以空格或逗号分隔(在NumPy中通常使用空格),如A = np.array([1, 2, 3, 4])。
  • 元素类型:数组中的元素类型必须相同。
  • 可变性:数组是可变的(在NumPy中,可以通过操作改变数组的元素),但其形状(shape)在创建后通常保持不变(除非进行reshape操作)。
  • shape 属性:数组具有shape属性,表示数组的维度和每个维度的大小。
  • 运算符与函数:

    数组创建:np.array()

    索引访问:通过索引访问数组元素,如arr[1]表示访问一维数组arr的第二个元素。

    切片操作:支持切片操作,如arr[1:5]表示从索引1到索引4(左闭右开)的子数组。

    数组操作:支持多种数组操作,如数学运算、形状变换、排序等。

  • 多维数组:数组可以是多维度的,而列表和元组通常是一维的(尽管它们可以包含其他列表或元组来模拟多维结构)。

总结:

  • 列表是可变序列,支持增、删、改操作,没有shape属性。
  • 元组是不可变序列,一旦创建,其元素不能改变,没有shape属性。
  • 数组(NumPy库提供)具有固定的数据类型和形状(shape),支持多维数组和多种数组操作。

在实际应用中,应根据具体需求选择合适的数据结构。例如,当需要存储可变长度的数据集合时,可以选择列表;当需要保护数据不被修改时,可以选择元组;当需要进行高效的数值计算和矩阵运算时,可以选择NumPy数组。