擅长:python、mysql、java
<p>由于您使用<code>passable</code>标志只是为了测试<code>i</code>是否在当前子串中,因此可以使用<code>in</code>运算符对以下列表进行理解:</p>
<pre><code>[s[g:o+1] for g in range(len(s)) for o in range(g, len(s)) if 'i' not in s[g:o+1]]
</code></pre>
<p>这和您的代码都将输出:</p>
<p><code>['l', 'la', 'lal', 'lall', 'lalla', 'lallal', 'lallala', 'a', 'al', 'all', 'alla', 'allal', 'allala', 'l', 'll', 'lla', 'llal', 'llala', 'l', 'la', 'lal', 'lala', 'a', 'al', 'ala', 'l', 'la', 'a', 'a', 'al', 'l']</code></p>