如何避免将字符串大写字母索引添加到列表时被拆分?
解决提取大写字母索引时的数字拆分问题
问题根源
你代码里的capitals += str(current)是问题所在:当索引是两位数(比如10)时,str(current)会变成"10",而+=操作会把这个字符串的每个字符挨个塞进列表——相当于分别添加了'1'和'0'两个元素。最后转成整数时,原本的单个索引就被拆成了两个独立数字,结果自然出错。
两种修复方法
方法1:直接存储整数索引(最简便)
不用把索引转成字符串,直接将整数类型的索引添加到列表即可:
string = input() capitals = [] for current in range(len(string)): if string[current].isupper(): capitals.append(current) # 直接添加整数索引,一步到位 print(capitals)
方法2:若需存字符串则用append替代+=
如果一定要先存储字符串形式的索引,别用+=,改用append()把完整的字符串作为单个元素加入列表,最后再统一转成整数:
string = input() capitals = [] for current in range(len(string)): if string[current].isupper(): capitals.append(str(current)) # 将完整的字符串索引作为单个元素添加 print([int(x) for x in capitals])
测试示例
比如输入字符串"abcDEFghijKLM",其中大写字母位于索引3、4、5、10、11、12:
- 修复前输出:
[3,4,5,1,0,1,1,1,2](错误) - 修复后输出:
[3,4,5,10,11,12](正确)
内容的提问来源于stack exchange,提问作者eclipse
相关产品推荐
相关产品推荐

