Вы можете помочь мне с этим кодом?Почему этот код python не работает?
s = [1, 1, 3, 3, 2, 2, 2, 2, 1, 1, 2, 2, 2]
def group(s):
lst = []
temp_lst = []
for i in s:
if len(temp_lst) == 0:
temp_lst.append(i)
continue
if temp_lst[0] == i:
temp_lst.append(i)
else:
lst.append(temp_lst)
del temp_lst[:]
temp_lst.append(i)
return lst
возвращает:
[[2, 2, 2], [2, 2, 2], [2, 2, 2], [2, 2, 2]]
Почему?
Мой желаемый результат:
[[1, 1], [3, 3], [2, 2, 2, 2], [1, 1], [2, 2, 2]]
Вы заполняете внешний список со ссылками на тот же внутренний список; 'del tmp_lst [:]' опустошает существующий список, вы никогда не создадите новый. Также обратите внимание, что 'itertools.groupby' поможет вам. – jonrsharpe
Использование ['itertools.groupby'] (https://docs.python.org/3/library/itertools.html#itertools.groupby):' [list (g) для _, g в groupby (s)] ' –