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

原文 标签 java python arrays list tuples

我知道Java,最近也开始学习Python。在某一时刻,我了解到我需要暂停一下,并弄清所有与数据结构有关的问题,尤其是列表,数组和元组。如果我在以下任一方面有误,请您纠正我:


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


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

最佳答案

多数是错误的。


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

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

相关文章:

java - 如何通过单击按钮来更改小程序的大小(宽x高)?

java - 将屏幕截图附加到Rally测试用例结果

java - 在Java中将ISO8601日期转换为UNIX时间戳

python - Flask POST 请求导致服务器崩溃

java - 不能直接调用父类(super class)型构造函数 - 为什么不呢?

python - 为什么 django url 以斜杠结尾?

python - Pandas DataFrame:转换整数时间hh:mm

arrays - 使用动态规划和一维数组的二项式系数

c - C将数组的大小传递给另一个C文件变量

java - 在Java中,如何确定char数组是否包含特定字符?