Fortran中Python的itertools.product相当于什么?

时间:2017-07-29 17:08:12

标签: fortran

下面的Python代码会根据值ndim0生成所有大小为1的不同向量:

import itertools

ndim = 8
A = list(itertools.product([0,1], repeat=ndim))
print (A)

在Fortran中可以这样做吗?那么Fortran中的intertools.product相当于什么?

1 个答案:

答案 0 :(得分:0)

是的,它可以在Fortran中做同样的事情,尽管有些人可能认为它有点麻烦。等同于itertools.product的是什么?我没有itertools.product首先出现的问题。但这个小功能似乎做你想要的......

  FUNCTION bit_vectors(ndim) RESULT(bv)
    INTEGER, INTENT(in) :: ndim
    INTEGER, DIMENSION(0:2**ndim-1,ndim) :: bv
    INTEGER :: jx
    INTEGER, DIMENSION(0:ndim-1) :: bits
    bits = [(jx,jx=0,ndim-1)]
    DO jx = 0, 2**ndim-1
       bv(jx,:) = MERGE(1,0,BTEST(jx,bits))
    END DO
  END FUNCTION bit_vectors

我想你可以将这种方法概括为更广泛的目的。