擅长:python、mysql、java
<p>您可以使用<code>enumerate</code>获取<code>lot</code>位置,然后计算子列表中的<code>obj</code>:</p>
<pre><code>lst = ["aa", "lot", "bb", "obj", "obj", "obj", "cc", "lot", "obj", "gg", "lot", "obj", "obj"]
lot = [i for i, x in enumerate(lst) if x == "lot"]
obj = [lst[a:b].count("obj") for a, b in zip(lot, lot[1:] + [len(lst)])]
print(obj) # [3, 1, 2]
</code></pre>
<p>或者首先从列表中删除“垃圾”,然后您不需要子列表和<code>count</code>之后:</p>
<pre><code>lst = [x for x in lst if x in ("lot", "obj")]
lot = [i for i, x in enumerate(lst) if x == "lot"]
obj = [b - a - 1 for a, b in zip(lot, lot[1:] + [len(lst)])]
</code></pre>
<p>(两者都不会计算第一个<code>lot</code>之前的任何<code>obj</code>,而是在最后一个之后。)</p>