mat*_*tam 5 python integer split list indices
我有以下问题.当原始输入列表的两个元素之间的步长不是1时,有一个整数列表,我想将它拆分成列表列表.例如:input = [0,1,3,5,6,7 ],输出= [[0,1],[3],[5,6,7]]
我写了下面这个函数,但它很糟糕,我想知道你们中的任何人是否会帮我找到更好的解决方案.我试图使用itertools,但无法解决它.
这是我的解决方案:
def _get_parts(list_of_indices):
lv = list_of_indices
tuples = zip(lv[:-1], lv[1:])
split_values = []
for i in tuples:
if i[1] - i[0] != 1:
split_values.append(i[1])
string = '/'.join([str(i) for i in lv])
substrings = []
for i in split_values:
part = string.split(str(i))
substrings.append(part[0])
string = string.lstrip(part[0])
substrings.append(string)
result = []
for i in substrings:
i = i.rstrip('/')
result.append([int(n) for n in i.split('/')])
return result
Run Code Online (Sandbox Code Playgroud)
非常感谢!
这适用于任何可迭代的
>>> from itertools import groupby, count
>>> inp = [0, 1, 3, 5, 6, 7]
>>> [list(g) for k, g in groupby(inp, key=lambda i,j=count(): i-next(j))]
[[0, 1], [3], [5, 6, 7]]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1301 次 |
| 最近记录: |