import numpy as np
rslt = [list(x) for x in np.split(np.array(a), [i for i, x in enumerate(a) if x=="ab"][1:])]
maxlen = max(len(x) for x in rslt)
rslt = [x+['']*(maxlen-len(x)) if len(x)<maxlen else x for x in rslt ]
说明:
In [149]: rslt = [list(x) for x in np.split(np.array(a), [i for i, x in enumerate(a) if x=="ab"][1:])]
In [150]: rslt
Out[150]:
[['ab', 'fasj', 'sfk', 'sfsfg'],
['ab', 'gwre'],
['ab', 'werwe', 'fsfj', 'lke']]
In [151]: maxlen = max(len(x) for x in rslt)
In [152]: maxlen
Out[152]: 4
In [153]: rslt = [x+['']*(maxlen-len(x)) if len(x)<maxlen else x for x in rslt ]
In [154]: rslt
Out[154]:
[['ab', 'fasj', 'sfk', 'sfsfg'],
['ab', 'gwre', '', ''],
['ab', 'werwe', 'fsfj', 'lke']]
以下是我使用
numpy.split
和list comprehension
的Pythonic方法:说明:
这段代码不是很干净,但它可以做到这一点。一定要亲自验证一下,看看它是否正确回答了你的问题。你知道吗
以下代码并不完美,但可以完成任务(如果我正确理解了您的问题):
将返回:
Edit:OP刚刚声明到下一个
ab
的最大长度是4。这将大大简化代码:相关问题 更多 >
编程相关推荐