2017-07-29 34 views
0

的Python代碼生成大小ndim的所有不同的載體,從價值01建:在Fortran中Python的itertools.product的等價物是什麼?下面

import itertools 

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

是否有可能做同樣的Fortran語言?那麼什麼是Fortran中intertools.product的等價物?

+1

你在找什麼,叫做笛卡爾產品。我不認爲在Fortran標準中是否存在這樣的內在概念。但是,鑑於其定義,應該很容易在Fortran中進行編碼。 https://www.hackerrank.com/challenges/itertools-product – King

回答

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 

我想你可以推廣這種方法的更廣泛的目的。

+0

您的代碼完美無缺!非常感謝您的好意!我很感激... – rogwar

+0

https://docs.python.org/3/library/itertools.html#itertools.product – cub

相關問題