【问题标题】:How to mimic python's negative indexing of arrays in Fortran?如何在 Fortran 中模仿 python 对数组的负索引?
【发布时间】:2016-05-29 02:05:55
【问题描述】:

在python中,可以使用负数组索引从末尾开始访问数组。如果您使用例如,这将特别有用。具有圆形边界条件的数组。

我们可以在 Fortran 中模仿这个,而不使用 IF 子句吗?

例如,我想在 Fortran 中获得的是通过发布

myarray(-1)

我得到了数组的最后一个元素(与所有其他元素类似)。

【问题讨论】:

  • 可能类似于 myarray( myarray.length -1) 或 frontran 中的等价物
  • 为什么需要 Python 标签?
  • 这看起来很有用,直到您意识到 myarray(-1) 是数组中的一个实际元素并且您需要它来处理那些非常边界条件,以便您可以在元素 1 处开始真正的 PDE 域(如果是 0,则你希望如此)而不是元素 3。Fortran 根本不是 Python。不要用 Fortran 写 Python,也不要用 Python 写 Fortran,你会混淆你代码的读者。
  • 如果您使用例如具有圆形边界条件的数组。 至于 Python,我没有史酷比,但在 Fortran 中,固有的 cshift 对于操作具有圆形边界条件的数组很有用。我更同意@VladimirF 的观点,即你应该用 Fortran 编写 Fortran,用 Python 编写 Python。也许如果我们知道您为什么想要您想要的,我们可以提供更有用和更多的 Fortranny 指导。
  • 由于 Fortran 支持任意索引,因此您可以很好地拥有实际使用负索引值的数组——因此负索引的 python 式使用从末尾向后计数将是不兼容的。

标签: python arrays fortran


【解决方案1】:

您可以使用以下方法获取最后一个元素:

myarray(size(myarray))

或最后一个元素之前:

myarray(size(myarray) - 1)

请注意,这只适用于索引为 1 的数组。如果不确定,可以使用ubound

【讨论】:

  • 您需要添加一个以使 -1 引用最后一个元素,但为了与 1- 索引保持一致,我们可能希望零指向末尾。
  • 我不确定这是否能回答问题,因为 AF7 询问 fortran 是否可以对数组进行负索引,而不是如何访问第 n 和 nth-1 元素
猜你喜欢
  • 1970-01-01
  • 2019-06-02
  • 1970-01-01
  • 1970-01-01
  • 2014-01-21
  • 2014-04-06
  • 1970-01-01
  • 2017-03-13
  • 2014-01-26
相关资源
最近更新 更多