-
HUH函数
在列表上使用迭代器使这变得非常简单。只需抓取下一个项目,它会告诉您接下来还要抓取多少,依此类推,直到列表末尾:test = [3, 'a', 'b', 'c', 2, 'd', 'e', 3, 'f', 'g', 'h']it = iter(test)for num in it: print(", ".join(next(it) for _ in range(num)))打印:a, b, cd, ef, g, h如果需要保存结果,您还可以将其转换为列表:>>> it = iter(test)>>> [[next(it) for _ in range(num)] for num in it][['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h']]
-
红糖糍粑
您可以创建一个生成器来延迟迭代列表的各个部分:test = [3, 'a', 'b', 'c', 2, 'd', 'e', 3, 'f', 'g', 'h']def parts(lst): idx = 0 while idx < len(lst): part_length = lst[idx] yield lst[idx+1: idx + part_length + 1 ] idx += part_length+1 for part in parts(test): print(part)输出:['a', 'b', 'c']['d', 'e']['f', 'g', 'h']
-
哔哔one
如果您的输入结构总是这样,您可以执行以下操作:result = [test[i:i+j] for i, j in enumerate(test, 1) if isinstance(j, int)]print(result)# [['a', 'b', 'c'], ['d', 'e'], ['f', 'g', 'h']]