What is the equivalent of the following Python list comprehension in Fortran? -


i trying write following list comprehension(written in python) in fortran.

lit = [[x,y] x in [p,q,r] y in [h,k,l] if [x,y]!=[a,b]] 

where a, b, p ,q ,r, h, k, l integers

how can achieve if want fill columns first in 2d fortran array?

the python code returns list. equivalent to

for x in [p,q,r]:      y in [h,k,l]:          if [x,y]!=[a,b]:              list.append([x,y]) 

i made 2 sublists in fortran. sublist_x , sublist_y each list contains p,q,r , h,k,l respectively.

integer :: list(0:7), sublist_x(0:2),sublist_y(0:2), count  count =-1  i=0,7    if (i%3 ==0)    count = count +1    endif    list(0,i)=sublist_x(i%3)    list(1,i)=sublist_y(count%3) enddo 

i think complex way of doing things...

if understand correctly want cartesian product of 2 little lists, excluding element [a,b] ? if misunderstand, stop reading now. here's little program want ...

program test    implicit none    integer, dimension(:), allocatable :: listx, listy, bad_element   integer, dimension(:,:), allocatable :: outlist   integer :: ix, jx, alstat, n_elements    logical, dimension(:), allocatable :: rows    listx = [1,2,3]   listy = [21,22,23]   bad_element = [3,21]    n_elements = size(listx)*size(listy)   allocate(outlist(2,n_elements),stat=alstat)   if (alstat/=0)      write(*,*) "something went wrong allocating result array"      stop   else      outlist(1,:) = reshape(listx,[n_elements],listx)      outlist(2,:) = reshape(spread(listy,1,size(listx)),[n_elements])   end if    ix = 1, n_elements      if (all(outlist(:,ix)==bad_element))         outlist(:,ix:) = eoshift(outlist(:,ix:),1,dim=2)      end if   end  end program test 

at end of program outlist contains cartesian product elements equal bad element replaced 0s , pushed end of outlets. hard-wired numbers above, output is:

    1    2    1    2    3    1    2    3    0    21   21   22   22   22   23   23   23    0 

i guess shouldn't have difficulty trimming remove 0s, nor in packaging program routine. , hope code explains itself.


Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -