I completely agree, Vhanja. But first of all, I've got to say, I keep reading about how Irene drugged and beat Sherlock without a mention of the circumstances. At that point she makes it clear that she will die if he takes her phone. She tries to reason with him, and when that doesn't work, does pretty much the minimum physically to get him to give it up. Was she just supposed to politely accept that she was going to die, because she didn't want to hurt Sherlock in any way? Anyway, I think this one Sherlock clearly understands and forgives immediately - and is probably glad it happened (he didn't really want her to die). The awful thing Irene does is tricking/seducing Sherlock into deciphering the code, and then sending it to Moriarty. Sherlock forgives that too ... I think he realises that Irene is all about trying to protect herself. And when she can't, he does it for her (I think he secretly likes the hero role too).
Had to get that off my chest, but yes I agree, Sherlock is very forgiving. But I think that is partly because he can see straight to the heart of the issue. As with Irene - her motivations are not vindictive, that we know of.
It looks as if Mary never had any ill-feeling towards Sherlock and shot him to protect herself, not because she wanted to cause him pain/death.
With John, I think he understands why John blames him, and feels guilt himself.
With Eurus, I wonder if there's a little bit of guilt about not including her as a child - but also, I think he is compassionate. And although Eurus is very extreme, and dangerous and did absolutely terrible things, her main motivation seemed to be that she wanted attention from Sherlock, rather than to hurt him. She has a terrible life, locked in that prison, and Sherlock gives her a little bit of human connection.