擅长:python、mysql、java
<p>你的问题文本似乎表明你在每个单词的开头寻找你的短词。那应该很容易:</p>
<pre class="lang-py prettyprint-override"><code>matched_words = [word for word in fullwords if any(word.startswith(shortword) for shortword in shortwords]
</code></pre>
<p>如果出于某种原因(不太可能更快)希望对此进行正则化,则可以进行大量替换:</p>
<pre class="lang-py prettyprint-override"><code>regex_alternation = '|'.join(re.escape(shortword) for shortword in shortwords)
matched_words = [word for word in fullwords if re.match(rf"^{regex_alternation}", word)]
</code></pre>
<p>或者,如果您的短词是<em>始终</em>四个字符,您可以将前四个字符切掉:</p>
<pre class="lang-py prettyprint-override"><code>shortwords = set(shortwords) # sets have O(1) lookups so this will save
# a significant amount of time if either shortwords
# or longwords is long
matched_words = [word for word in fullwords if word[:4] in shortwords]
</code></pre>