擅长:python、mysql、java
<p>根据您的意见:</p>
<pre><code>inp = ["aa", "lot", "bb", "obj", "obj", "obj", "cc", "lot", "obj", "gg", "lot", "obj", "obj"]
</code></pre>
<p>两种方法:</p>
<ul>
<li>一个可读性很好的生成器函数:</li>
</ul>
<pre><code>
def group_lots(inp):
count = 0
seen_lot = False
for item in inp:
if item == "obj":
count += 1
if item == "lot":
if seen_lot:
yield count
count = 0
seen_lot = True
if count:
yield count
print(list(group_lots(inp))) # [3, 1, 2]
</code></pre>
<ul>
<li>或无法阅读的神秘魔法itertools.groupby表达式:</li>
</ul>
<pre><code>import itertools
obj_counts = [
len(list(group_contents))
for is_lot, group_contents in itertools.groupby(
(item for item in inp if item in ("lot", "obj")),
lambda i: i == "lot",
)
if not is_lot
]
print(obj_counts) # [3, 1, 2]
</code></pre>