次の問題があります。整数のリストを持っているので、元の入力リストの 2 つの要素の間のステップが 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
どうもありがとう!