cambiar algunas letras minúsculas a mayúsculas en cadena

index = [0, 2, 5] s = "I am like stackoverflow-python" for i in index: s = s[i].upper() print(s) IndexError: string index out of range 

Entiendo que en la primera iteración la cadena, s , se convierte simplemente en el primer carácter, una “I” mayúscula en este caso particular. Pero, he intentado hacerlo sin la “s =”, usando swapchcase() lugar, pero no está funcionando.

Básicamente, estoy intentando imprimir la cadena s con las letras de índice en mayúsculas utilizando Python 3.X

Las cadenas son inmutables en Python, por lo que necesita crear un nuevo objeto de cadena. Una forma de hacerlo:

 indices = set([0, 7, 12, 25]) s = "i like stackoverflow and python" print("".join(c.upper() if i in indices else c for i, c in enumerate(s))) 

impresión

 I like StackOverflow and Python 

Aquí está mi solución. No se repite en todos los caracteres, pero no estoy seguro de si convertir la cadena a una lista y volver a una cadena sea más eficiente.

 >>> indexes = set((0, 7, 12, 25)) >>> chars = list('i like stackoverflow and python') >>> for i in indexes: ... chars[i] = chars[i].upper() ... >>> string = ''.join(chars) >>> string 'I like StackOverflow and Python'