It is much simpler and more convenient to solve such problems using indexed variables instead of generating a list of different Symbol s. In this way:
listOfRules = Array[ f@ # :> list[[#]] &, {100}]; Short@ % => {f[1]:>list[[1]],f[2]:>list[[2]],f[3]:>list[[3]],f[4]:>list[[4]], <<92>>,f[97]:>list[[97]],f[98]:>list[[98]],f[99]:>list[[99]],f[100]:>list[[100]]}
If you plan to make such a replacement many times, Dispatch large list of rules:
listOfRules = Dispatch@listOfRules ;
Replacement can be performed as usual:
expr /. listOfRules
source share