2017-07-29 33 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

相关问题