回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有以下列表x1、x2、x3,我想将其分块到下面提到的各个输出中:</p>
<pre><code>x1 = ['req', 'a', 'b', 'c', 'req', 'd', 'e', 'req', 'f']
expected_out1 = [['req', 'a', 'b', 'c'], ['req', 'd', 'e'], ['req', 'f']]
x2 = ['req', 'a', 'b', 'c', 'req', 'd', 'e', 'req', 'f', 'req']
expected_out2 = [['req', 'a', 'b', 'c'], ['req', 'd', 'e'], ['req', 'f'], ['req']]
x3 = ['req', 'a', 'b', 'c', 'req', 'd', 'e', 'req', 'req']
expected_out3 = [['req', 'a', 'b', 'c'], ['req', 'd', 'e'], ['req'], ['req']]
</code></pre>
<p>我编写了以下代码来解决这些场景:</p>
<pre><code>import numpy as np
def split_basedon_condition(b):
num_arr = np.array(b)
arrays = np.split(num_arr, np.where(num_arr[:-1] == "req")[0])
return [i for i in [i.tolist() for i in arrays] if i != []]
</code></pre>
<p>但我得到了以下结果:</p>
<pre><code>split_basedon_condition(x1)
actual_out1 = [['req', 'a', 'b', 'c'], ['req', 'd', 'e'], ['req', 'f']] # expected
split_basedon_condition(x2)
actual_out2 = [['req', 'a', 'b', 'c'], ['req', 'd', 'e'], ['req', 'f', 'req']] # not expected
split_basedon_condition(x3)
actual_out3 = [['req', 'a', 'b', 'c'], ['req', 'd', 'e'], ['req', 'req']] # not expected
</code></pre>