擅长:python、mysql、java
<p>您可以使用枚举:</p>
<pre><code>print("".join(["*" if s[i] == s[0] and i != 0 else ch for i, ch in enumerate(s)]))
</code></pre>
<p>但那只是为了好玩,我会坚持你自己的解决方案。</p>
<p>要回答您的评论,可以使用多个映射将多个字符替换为translate:</p>
<pre><code>from string import maketrans
print(s[0]+s[1:].translate(maketrans(s[0]+s[2]+s[3],"*$!")))
o*$!al**$!a
</code></pre>
<p>在python3中,需要一个表,使用每个字符的ord作为键:</p>
<pre><code>print(s[0]+s[1:].translate((dict(zip((ord(s[0]),ord(s[2]),ord(s[3])),"*$!")))))
o*$!al**$!a
</code></pre>
<p>也可以使用re.sub忽略第一个字符:</p>
<pre><code>s = 'oompaloompa'
from re import sub
print(sub(r"(?<!^)"+s[0], "*", s))
o*mpal**mpa
</code></pre>
<p>但又有点过分了。</p>