的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