擅长:python、mysql、java
<p>我认为这是迭代器函数的一个很好的候选者:</p>
<pre class="lang-py prettyprint-override"><code>from typing import Iterator, List
def get_chunks(value: List[str]) -> Iterator[List[str]]:
chunk: List[str] = []
for item in value:
if is_int(item):
# If the value is an integer, we should start a new chunk!
yield chunk
chunk = []
chunk.append(item)
yield chunk # Make sure to yield the remaining chunk at the end
def is_int(value: str) -> bool:
try:
int(value)
return True
except ValueError:
return False
assert list(get_chunks(["100", "foo", "200", "bar"])) == [[], ["100", "foo"], ["200", "bar"]]
</code></pre>
<p>要在序列以整数开头时删除外部空列表,请执行以下操作:</p>
<pre class="lang-py prettyprint-override"><code>list(filter(None, get_chunks(["100", "foo", "200", "bar"])))
# [["100", "foo"], ["200", "bar"]]
</code></pre>
<p>可以很容易地通过断点条件函数(<code>is_int</code>将其抽象出来,使其与<code>itertools</code>中的各种帮助程序很好地组合</p>