# Issue

This Content is from Stack Overflow. Question asked by Maryam

I have a list and I want to get one element from two similar consecutive elements. (`sort` or `if is not in new_list` doesn’t work as I want to keep those similar elements that are not consecutive)

I’ve written this, but it returns an error with the range function that [i+1] is not in the range:

like: input: [‘a’,’b’,’b’,’c’,’c’,’a’]
output: [‘a’,’b’,’c’,’a’]

``````list = ['a','b','b','c','c','a']
new_list = []
for i in range(0,len(list)+1):
if  list[i]!=list[i+1]:
new_list.append(char[i])
i=i+1
print (new_list)
``````

# Solution

There’s a couple of issues here (indexing issues, using `list` as a variable name which shadows a builtin), but the simplest way to do this is to use `itertools.groupby()`:

``````from itertools import groupby

lst = ['a','b','b','c','c','a']
print([key for key, _ in groupby(lst)])
``````

If you can’t use groupby(), you can check whether you’ve already added the first letter in the current streak of letters (i.e. check if the last item in your accumulated result matches the letter you’re currently examining):

``````lst = ['a','b','b','c','c','a']
result = []
for item in lst:
if not result or item != result[-1]:
result.append(item)
print(result)
``````

These output:

``````['a', 'b', 'c', 'a']
``````

``` This Question was asked in  StackOverflow by  Maryam and Answered by BrokenBenchmark It is licensed under the terms of
CC BY-SA 2.5. - CC BY-SA 3.0. - CC BY-SA 4.0.```