我有一个如下所示的生成器对象:
a = ["ab", "fasj", "sfk", "sfsfg", "ab", "gwre", "ab", "werwe", "fsfj", "lke"]
使用 python,如何根据“ab”的出现将其拆分为相同长度的 block ?
我正在寻找类似的东西:
b = ["ab", "fasj", "sfk", "sfsfg"]
c = ["ab", "gwre", " ", " "]
d = ["ab", "werwe", "fsfj", "lke"]
最佳答案
以下代码并不完美,但可以完成工作(如果我正确理解您的问题):
array = ["ab", "fasj", "sfk", "sfsfg", "ab", "gwre", "ab", "werwe", "fsfj", "lke"]
def split(l):
def internal():
stack = []
for v in l:
if v == "ab":
if stack:
yield stack
stack = []
stack.append(v)
if stack:
yield stack
ret = list(internal())
size = max(map(len, ret))
return [x + [" "] * (size - len(x)) for x in ret]
print(split(array))
这将被返回:
[
["ab", "fasj", "sfk", "sfsfg"],
["ab", "gwre", " ", " "],
["ab", "werwe", "fsfj", "lke"]
]
编辑:OP 刚刚声明到下一个 ab
的最大长度为 4。这将大大简化代码:
array = ["ab", "fasj", "sfk", "sfsfg", "ab", "gwre", "ab", "werwe", "fsfj", "lke"]
def split(l):
stack = []
for v in l:
if v == "ab":
if stack:
yield stack + [" "] * (4 - len(stack))
stack = []
stack.append(v)
if stack:
yield stack + [" "] * (4 - len(stack))
print(list(split(array)))
关于python - 根据字符串拆分迭代并进行相同长度的拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37840406/