Java中的数据结构& Python及其实现:列表,数组,元组

时间:2014-03-02 06:59:40

标签: java python arrays list tuples

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

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

我很确定我错了。你能纠正我吗? 感谢

1 个答案:

答案 0 :(得分:2)

大部分都是错误的。

  • list abstract data type是一个有序的元素序列,允许重复。有许多方法可以实现此数据类型,尤其是linked list,但大多数编程语言都使用dynamically resized arrays
  • 即使是链接列表也可能支持索引。实现没有办法直接跳到第n个元素,但它可以跟随链接到达那里。
  • Java List类型未指定实现,仅指定接口。 ArrayList类型是使用动态数组实现的List; Linkedlist正是这个名字所说的。
  • Python的列表是使用动态调整大小的数组实现的。 Python的元组是用固定大小的数组实现的。
  • 实际上有两种Python类型通常被称为数组,不包括“数组”的常见新手用法来引用Python列表。 array模块提供了数组,并且有NumPyndarray s。
  • 当您索引数组时,实现不会从第一个元素的位置迭代到第n个元素。它会向数组地址添加一个偏移量,以直接跳到元素,而不进行迭代。