Учитывая список данных, я пытаюсь создать новый список, в котором значение в позиции i
является длиной самого длинного запуска, начиная с позиции i
в исходном списке. Например, данный
x_list = [1, 1, 2, 3, 3, 3]
Должен вернуться:
run_list = [2, 1, 1, 3, 2, 1]
Мое решение:
freq_list = []
current = x_list[0]
count = 0
for num in x_list:
if num == current:
count += 1
else:
freq_list.append((current,count))
current = num
count = 1
freq_list.append((current,count))
run_list = []
for i in freq_list:
z = i[1]
while z > 0:
run_list.append(z)
z -= 1
Во-первых, я создаю список freq_list
кортежей, где каждый элемент первого кортежа является элементом из x_list
, а второй - номером общего прогона.
В этом случае:
freq_list = [(1, 2), (2, 1), (3, 3)]
Имея это, я создаю новый список и добавляю соответствующие значения.
Однако мне было интересно, есть ли более короткий путь/другой способ сделать это?