Question: I have a list like this `l = {1 + 2*s, 2 + 3*s, 4 + 1*s}`, and I have calculated `s = {1, 2, 3}`. I need to replace `s` in `l` so that `l = {1 + 2*1, 2 + 3*2, 4 + 1*3}`. Is it possible to do that with `ReplacAll` (`/.`) and `Rule`?

Answer: 
Here's some ways. Using:

```
l = {1+2*s,2+3*s,4+1*s};
slist = {1, 2, 3};

```

The answer closest to what you asked is

```
{1 + 2*s, 2 + 3*s, 4 + 1*s} /. s -> slist // Diagonal

```

However, that does `3^2 - 3` too many calculations, so here's some more ways.

```
Module[{i = 1}, l /. s :> slist[[i++]]]
MapThread[#1 /. s -> #2 &, {l, slist}]
MapThread[ReplaceAll, {l, Thread[s -> slist]}]
ReplaceAll @@@ Transpose[{l, Thread[s -> slist]}]
Map[First@#1 /. s -> Last@#1 &, Transpose@{l, slist}]
MapIndexed[#1 /. s -> slist[[First@#2]] &, l]

```

If `s` is always going to be the list `{1, 2, 3, ...}`, then:

```
MapIndexed[#1 /. s -> First@#2 &, l]

```
```
{#1[[1]] /. s -> #2[[1]], #1[[2]] /. s -> #2[[2]], #1[[3]] /. 
    s -> #2[[3]]} &[{1+2*s,2+3*s,4+1*s}, {1,2,3}]

```