Python实现:将列表指定索引位置的字母转为大写
问题原因
Python中的字符串是不可变对象,无法直接通过索引赋值(s[i] = ...)修改单个字符,这就是你的代码无法运行的核心原因。
解决方法
方法1:转为列表修改后转回字符串
这是最直观的方案,利用列表的可变性完成修改:
s = "string" l = [1, 3] # 把字符串转成可修改的列表 s_list = list(s) for i in l: s_list[i] = s_list[i].upper() # 再把列表转回字符串 s = ''.join(s_list) print(s) # 输出: sTrIng
方法2:使用列表推导式+枚举
通过枚举字符串的索引和字符,条件判断后直接生成新字符串:
s = "string" l = [1, 3] s = ''.join([char.upper() if idx in l else char for idx, char in enumerate(s)]) print(s) # 输出: sTrIng
如果索引列表l元素较多,建议先转成集合(set(l)),这样idx in l的判断效率会更高:
s = "string" l = {1, 3} # 转为集合 s = ''.join([char.upper() if idx in l else char for idx, char in enumerate(s)]) print(s)
内容的提问来源于stack exchange,提问作者stachu grzybiarz
相关产品推荐
相关产品推荐

