擅长:python、mysql、java
<p>您的代码效率很低,因为您对坏单词列表进行了迭代,并且每次迭代都会对消息进行一次迭代(对于<code>count</code>),这使得它成为O(单词列表的长度*消息的长度)</p>
<p>你应该使用集合:一组你的坏话</p>
<pre><code>wordfilter = {"badword", "badword", "badword", "badword", "badword", "badword", "badword"}
</code></pre>
<p>在你的信息中有一组词:</p>
<pre><code>words = set(message.content.split())
</code></pre>
<p>测试消息是否包含不好的单词只是:</p>
<pre><code>if not words.isdisjoint(wordfilter):
# there is a badword in your message
</code></pre>
<p>这样会更有效率</p>
<p>另一个选项是测试消息的任何单词是否是集合的一部分,包括:</p>
<pre><code>words = message.content.split()
if any(word in wordfilter for word in words):
# there is a badword in your message
</code></pre>
<p>测试一个项目是否在一个集合中只是O(1),一旦发现一个坏单词,这个测试就会停止</p>
<p>你应该测试和比较</p>