下面的Python代码根据值0和1生成大小为ndim的所有不同向量
import itertools
ndim = 8
A = list(itertools.product([0,1], repeat=ndim))
print (A)在Fortran中有可能做同样的事情吗?那么在Fortran中什么是intertools.product的等价物呢?
发布于 2017-07-30 03:04:08
是的,在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我想你可以将这种方法推广到更广泛的目的。
https://stackoverflow.com/questions/45391894
复制相似问题