擅长:python、mysql、java
<p>我真的不明白你在这两个列表的结构。这还不清楚,我不认为你能从中得到一个合适的算法。你知道吗</p>
<p>你说:“对于一个给定的文本,如果位置列表中的任何一个单词出现,它必须被位置中的特定单词替换”,这意味着“<em>前</em>”必须被“<em>下</em>”、“<em>前</em>”被“<em>右</em>”替换,“<em>右</em>”没有替换。那没道理!你知道吗</p>
<p>所以我猜,从你剩下的问题来看,你想把“<em>front</em>”后面的词替换成“<em>front</em>”,把“<em>back</em>”后面的词替换成“<em>back</em>”。但是,没有信息可以帮助算法知道哪些词是替换词,哪些词要被替换。你知道吗</p>
<p>因此,唯一的解决方案是以一种更具python风格的方式改变你的结构,从中生成一个简单而优雅的算法。然后,您可能需要尝试这样的结构:</p>
<pre><code>position = ['front', 'back']
position_list = [('frnt', 'ft'), ('bck')]
</code></pre>
<p>然后算法看起来像:</p>
<pre><code>replaces = zip(position, position_list)
for new_word, old_words in replaces:
for old_word in old_words:
str = str.replace(old_word, new_word)
</code></pre>
<p>您也可以使用字典:</p>
<pre><code>positions = {'front': ['frnt', 'ft'], 'back': ['bck']}
for new_word, old_words in positions.iteritems():
for old_word in old_words:
str = str.replace(old_word, new_word)
</code></pre>
<p>换句话说,尽量避免创建最终会导致生成处理列表索引的算法的结构。。。你知道吗</p>