Объясните, пожалуйста, решение задачи
Наткнулся на такое вот решение задачи:
def unique_in_order(iterable):
return [ch for i, ch in enumerate(iterable) if i == 0 or ch != iterable[i - 1]]
iterable = 'AAAABBBCCDAABBB'
print(unique_in_order(iterable))
Объясните, пожалуйста, что написано в return? Я понимаю, что это какой-то генератор списка, но весь этот синтаксис мне не понятен совсем... Пытался разобрать её по ходам в дебагере пайчарма, но он сразу выводит ответ.
Ответы (2 шт):
Автор решения: Alexey Leshchenko
→ Ссылка
ch for i, ch in enumerate(iterable) - вернуть каждый элемент списка iterable
if i == 0 or ch != iterable[i-1] - если элемент первый или он не равен предыдущему
Автор решения: dIm0n
→ Ссылка
Можно переписать так, чтобы было понятнее:
def unique_in_order(iterable):
l = [] # пустой список
for i, ch in enumerate(iterable): # для каждого элемента ch с индексом i в последовательности iterable
if i == 0 or ch != iterable[i - 1]: # если индекс равен нулю либо элемент не равен предыдущему элементу
l.append(ch) # добавляем элемент в список
return l # возвращаем получившийся список
iterable = 'AAAABBBCCDAABBB'
print(unique_in_order(iterable))