1. Dlaczego nie działa?
Nie zdziała to, ponieważ i jest tutaj tylko zmienną która reprezentuje wartość kolejnych elementów listy. Ty podmieniasz ,,i" na stringa, ale ,,i" nie ma żadnego powiązania z listą, więc jego zmiana nie będzie mieć na te listę wpływu.
2. Inne możliwości:
Możesz do tego celu użyć wyrażenia listowego:
tab = [str(i) for i in tab]
W takim wypadku to zadziała, ponieważ lista jest tworzona przy pomocy elementów które to wyrażenie zwraca.