java - Java 和 Python 中的数据结构及其实现 : Lists, 数组、元组

标签 java python arrays list tuples

我了解 Java,最近也开始学习 Python。有一次我明白我需要暂停一下并澄清与数据结构相关的所有问题,尤其是列表、数组和元组。如果我有以下任何错误,请您纠正我:

  • 最初,根据数据结构标准,列表不 支持任何类型的索引。访问的唯一方法 元素是通过迭代(下一个方法)。
  • 在 Java 中,实际上有一种通过索引访问元素的方法(即 get(index) 方法),但即使您使用这些与索引相关的方法,它仍然从第一个元素(或更具体地说是它的引用)开始迭代)
  • Python 中有一种方法可以像 Java 中的数组一样访问列表元素,使用 list[index] 语法,但实际上,即使这种数据类型称为“列表”,我们也有一个数组例如,当我们引用第三个元素时,我们直接引用数组中的第 3 个元素来获取引用,而不需要从第一个元素进行迭代(我很确定我在这里错了)
  • 元组的实现方式与 Python 中的列表相同。唯一的区别是它们是不可变的。但它仍然比数组更接近列表,因为元素在内存中并不连续。
  • 不像 Python 那样有数组
  • 在数据结构理论中,当我们创建数组时,它仅使用对内存第一个单元的引用,然后迭代到我们指定为索引的元素数。列表和数组之间的主要区别在于所有元素都连续位于内存中,这就是我们在性能方面获胜的原因。

我很确定我在某个地方错了。你能纠正我吗? 谢谢

最佳答案

大部分都是错误的。

  • list abstract data type是元素的有序序列,允许重复。有很多方法可以实现此数据类型,特别是作为 linked list ,但大多数编程语言使用 dynamically resized arrays .
  • 甚至链接列表也可以支持索引。实现无法直接跳到第 n 个元素,但它可以通过链接到达那里。
  • Java 的 List type 不指定实现,只指定接口(interface)。 ArrayList type是一个用动态数组实现的List; Linkedlist正如其名称所示。
  • Python 的列表是通过动态调整大小的数组来实现的。 Python 的元组是用固定大小的数组实现的。
  • 实际上有两种通常称为数组的 Python 类型,这还不包括新手常见的使用“数组”来引用 Python 列表的情况。有 array 提供的数组模块,有NumPyndarray
  • 当您对数组进行索引时,实现不会从第一个元素的位置迭代到第 n 个元素。它向数组地址添加一个偏移量,以便直接跳到该元素,而无需迭代。

关于java - Java 和 Python 中的数据结构及其实现 : Lists, 数组、元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22124831/

相关文章:

python - 用 Python 比较贷款

c - 如何获取用户输入以在 C 中打开文件?

java - 在 Java 中评估后缀表达式

java - 如何在android中获取准确的UTC时间戳

Java+MongoDB grantRolesToUser

java - 将 RGB 值转换为颜色名称

Python 检查模块 : keyword only args

python - 将函数作为参数传递

JavaScript 未捕获类型错误 : Cannot set property '-1' of undefined

python - 如何制作前一个值不满足条件的索引数组?