的Python代码生成大小ndim
的所有不同的载体,从价值0
和1
建:在Fortran中Python的itertools.product的等价物是什么?下面
import itertools
ndim = 8
A = list(itertools.product([0,1], repeat=ndim))
print (A)
是否有可能做同样的Fortran语言?那么什么是Fortran中intertools.product
的等价物?
的Python代码生成大小ndim
的所有不同的载体,从价值0
和1
建:在Fortran中Python的itertools.product的等价物是什么?下面
import itertools
ndim = 8
A = list(itertools.product([0,1], repeat=ndim))
print (A)
是否有可能做同样的Fortran语言?那么什么是Fortran中intertools.product
的等价物?
是的,在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
我想你可以推广这种方法的更广泛的目的。
你在找什么,叫做笛卡尔产品。我不认为在Fortran标准中是否存在这样的内在概念。但是,鉴于其定义,应该很容易在Fortran中进行编码。 https://www.hackerrank.com/challenges/itertools-product – King