Вы, похоже, путаете понятие элемента списка и индекса.
Например, выражение генератора, повторяющееся по всем элементам списка xs
, равное его предшественнику, будет выглядеть так:
g = (xs[k] for k in range(1, len(xs)) if xs[k] == xs[k - 1])
Поскольку вас интересует только первый такой элемент, вы можете написать
next(xs[k] for k in range(1, len(xs)) if xs[k] == xs[k - 1])
, однако вы получите исключение, если таких элементов на самом деле нет.
Как правило, совет, отдавайте предпочтение простым читаемым функциям по сравнению с умными длинными однострочниками, особенно если вы новичок в языке. Ваша задача может быть выполнена следующим образом:
def first_duplicate(xs):
for k in range(1, len(xs)):
if xs[k] == xs[k - 1]:
return xs[k]
chars = ['1', '2', '3', 'a', 'a', 'b', 'c']
print(first_duplicate(chars)) # 'a'
PS Остерегайтесь использования list
в качестве имени переменной - вы скрываете встроенный тип