我发现很多问题围绕这个问题转,但没有一个直接回答这个问题的:
-在fortran中,消除整数列表中重复的方式有哪些(a)最快(挂钟)和(b)最优雅(简明清晰)
肯定有比我微弱尝试更好的方法:
Program unique
implicit none
! find "indices", the list of unique numbers in "list"
integer( kind = 4 ) :: kx, list(10)
integer( kind = 4 ),allocatable :: indices(:)
logical :: mask(10)
!!$ list=(/3,2,5,7,3,1,4,7,3,3/)
list=(/1,(kx,kx=1,9)/)
mask(1)=.true.
do kx=10,2,-1
mask(kx)= .not.(any(list(:kx-1)==list(kx)))
end do
indices=pack([(kx,kx=1,10)],mask)
print *,indices
End Program unique
我原本期望列表是有序的,但如果放宽这个要求会更好。