这里有一个疑问,如果s中有重复的字符,那么替换后,s的长度会变短吗?因为有for i in s(这里的s应该是固定长度)
s=input().strip()
dic = {char: s.count(char) for char in set(s)}
c=min(dic.values())
for i in s:
if dic[i]==c:
s=s.replace(i,'') # 这里有一个疑问,如果s中有重复的字符,那么替换后,s的长度会变短吗?因为上面有for i in s(这里的s应该是固定长度)
print(s)
先说答案: 会变短,你实际操作就可以看到。
但是这种写法极不推荐,你的这个例子运行起来没啥问题,但是这种写法属于是边遍历边修改,极容易引起不可预知的错误,会给自己埋坑的。
如果改成这种,就必然会出错。因为你的实际操作其实是会影响到遍历本身的
s
的。但是你的方式和我的区别在于,你的那个在一开始
s
作为可迭代对象在循环开始前被读取一次,之后使用的是它的迭代器,不再关心后续对s
的修改,虽然s
长度发生了变化,但是不影响迭代次数。而我写的这个例子则是,虽然for那块也是一开始就作为迭代器不会变了,但是后续
s[i]
取值就会出现索引越界的问题。建议: 如果你需要修改原字符串,且得到处理后的结果,最好就是用一个新的变量来储存你的结果。