シンプルなアプローチ:
def grpBySameConsecutiveItem(l):
rv= []
last = None
for elem in l:
if last == None:
last = [elem]
continue
if elem == last[0]:
last.append(elem)
continue
if len(last) > 1:
rv.append(last)
last = [elem]
return rv
print grpBySameConsecutiveItem([1,2,1,1,1,2,2,3,4,4,4,4,5,4])
出力:あなたはそれをソートしたり、inputlistを並べ替えしたい場合は、あなたはもはや連続で同じ番号を取得wouldntは、その後、あなたの出力をソートすることができ
[[1, 1, 1], [2, 2], [4, 4, 4, 4]]
しかし、。
すべての内部リストが同一であるため、インデックスに応じてリストのリストを並べ替える方法については、https://stackoverflow.com/a/4174955/7505395を参照してください(0を使用します)。
def grpByValue(lis):
d = {}
for key in lis:
if key in d:
d[key] += 1
else:
d[key] = 1
print(d)
rv = []
for k in d:
if (d[k]<2):
continue
rv.append([])
for n in range(0,d[k]):
rv[-1].append(k)
return rv
data = [1,2,1,1,1,2,2,3,4,4,4,4,5,4]
print grpByValue(data)
出力:
[[1, 1, 1, 1], [2, 2, 2], [4, 4, 4, 4, 4]]
リストはソートされていますか? – Engineero