You can edit other people's answers to update them or fix this. Most people are very open to it. I do it regularly if the code isn't linted or if SQL keywords are lowercase vs uppercase to improve readability for everyone.
I agree if it is fundamentally changing the nature of their code, but expanding an answer to include a Python 3 solution alongside an existing Python 2 one is something I've done myself and haven't experienced any issues with. IMO the most important part is to preserve and extend the original answer vs re-write it completely.
You don't have to modify, and I never do except to improve readability (read: eliminate or reduce horizontal scrollbars). It's not unusual to see a good contributor add an answer to an old question that uses newer syntax or version features. "The accepted answer is quite old but this question is the top result for 'javascript arrays' (e.g.), so this is how you do it in ES6."
Sure, but can answers be un-accepted once technologies have advanced and better solutions have become available? I see a lot of accepted answers that were correct and relevant once, but not in (Summer of) 2017.
Yes, it is possible and best practice to re-accept if the previously accepted answer is no longer correct. Only the asker can change the accepted answer.