数组和列表在Python中的工作方式

数组和列表是编程中一些最有用的数据结构-尽管很少有人真正发挥它们的全部潜能。今天,我将通过一些基础知识以及一些简单的Python示例向您介绍。

先决条件

为了学习这些概念,您不需要提前了解很多知识。 。编程范例和Python的基本知识会有所帮助,但这不是必需的。阅读我们的基本Python示例。

虽然以下基本思想可以应用于任何语言,但我将在Python中演示这些示例。它是一种易于学习的语言,并提供了一个了解发生了什么的出色平台。除此之外,tutorialspoint.com还提供了一个出色的在线Python解释器-如果您不想安装Python,甚至无需安装Python(如果需要,请查看我们的虚拟环境指南)。

什么是数据结构?在最基本的层次上,数据结构是有效存储数据的一种方式。因为数据结构不是数据类型,所以很容易感到困惑。数据类型告诉编译器(在Python的情况下为解释器),该数据将如何使用。数据结构指定可以执行的操作,并且经常执行特定的规则和规章。

您可能已经听说过某些 linear 数据类型(元素是顺序的):

  • 数组
  • 矩阵
  • 查找表
  • 类似地,列表通常包含规则和方法来调节其工作方式。一些常见的列表是:

  • 链接列表
  • 双链列表
  • 数组列表或动态数组
  • 有很多不同的数据结构。您可能听说过二叉树哈希。我今天将讨论基础知识,但您可能希望在感到舒适后就学更多。

    数组

    让我们从头开始。数组是(相关)值的简单集合。这些值称为元素。它们通常可以是您喜欢的任何数据类型,包括对象或其他列表!数组的主要警告是所有数据必须相同-您不能存储混合的字符串和整数。您几乎总是必须指定要存储多少个元素。确实存在可变大小或动态数组,但是定长数组从一开始就更简单。

    Python使事情有些复杂。它使您的工作变得很轻松,但并不总是遵循严格的数据结构定义。 Python中的大多数对象通常都是列表,因此创建数组实际上需要更多工作。以下是一些入门代码:

    from array import arraynumbers = array('i', [2, 4, 6, 8])print numbers[0]

    第一行将导入 array 模块,这是使用数组所必需的。第二行创建一个名为 numbers 的新数组,并使用值2、4、6和8对其进行初始化。每个元素都被分配一个称为 integer 值。键索引。键从开始,因此数字[0] 将访问第一个元素( 2 ):

    想知道'i'是做什么用的。这是一个类型代码,它告诉Python数组将存储整数。在Python中通常不需要这种东西(它被认为是“非Python的")。这样做的原因是简单的。 Python中的数组是操作系统底层C数组的非常薄的包装。这意味着它们既快速又稳定,但是它们可能并不总是遵循Python语法。

    您不能在这些数组中存储混合类型。假设您要存储字符串“ PCPC.me":

    numbers = array('i', [2, 4, 6, "PCPC.me"])

    这将是不允许的,并会引发异常:

    这里是打印所有元素的方式:<

    print numbers

    这种访问数组元素的方法效果很好,非常适合正确的任务。不利的是访问整个阵列。程序员本质上是懒惰的,所以我会很高兴编写更多,更好的代码,如果这意味着我可以简化维护并减少复制和粘贴的工作。

    每种编程语言都会实现某种循环,非常适合迭代(循环)列表元素。最常见的循环是 while for 。 Python通过提供一个 for 循环使事情变得更加轻松:

    for number in numbers:    print number

    请注意,您不必通过元素的键来访问元素。这是处理数组的一种更好的方法。遍历列表的另一种方法是使用 for 循环:

    for i in range(len(numbers)):    print numbers[i]

    这与上一个示例完全相同,尽管您必须指定元素数( len(cars))数组中,以及传递 i 作为数组的键。这几乎是循环中运行的代码。这种方式提供了更多的灵活性,并且速度稍快(尽管 for 循环在当时的多数上足够快。)

    列表

    现在,您知道数组的工作原理,让我们看一下列表。有时可能会造成混淆,因为人们可以互换使用不同的术语,并且列表数组……有点。

    列表是数组的一种特殊类型。最大的区别是列表可以包含混合类型(请记住,数组必须包含相同类型的元素)。列表在Python中非常简单:

    cars = ['Ford', 'Austin', 'Lancia']

    注意您不需要导入 array 模块吗?

    此语法声明了一个称为cars的列表。在方括号内,声明了列表的每个元素。每个元素都用逗号分隔,并且由于每个元素都是字符串,因此请在引号内声明它们。 Python知道这是一个对象,因此 print 语句将输出列表的内容:

    print cars

    就像数组一样,您可以使用循环来迭代列表元素:<

    for car in cars:    print car

    列表的真实用法是它们的混合类型。继续并添加一些额外的数据:

    cars = ['Ford', 'Austin', 'Lancia', 1, 0.56]

    对于Python来说这没问题-甚至没有引发异常:

    很容易将新元素添加到列表中(某些东西

    cars = ['Ford', 'Austin']print carscars.append('Lancia')print cars

    还可以将两个列表合并为一个列表:

    cars = ['Ford', 'Austin']print carsother_cars = ['Lotus', 'Lancia']cars.extend(other_cars)print cars

    使用 remove 语法删除元素同样容易:

    cars = ['Ford', 'Austin', 'Lotus', 'Lancia']print carscars.remove('Ford')print cars

    有关涵盖Python中列表和数组的基础知识。为什么不考虑编码项目,例如读写Google表格。尽管是另一种编程语言,但这些数组原则仍然适用。

    您学到了什么新东西吗?您想看一些更复杂的内容吗?在下面的评论中让我们知道您的想法!

    标签: 编程 Python