How to find unique occurrences in a Python list?

Problem

To get only the unique values in a Python list.

Solution

In this post, we’ll introduce three different techniques to identify if we have any repeated values in the list and obtain a list of unique values.

Option 1: Using NumPy

NumPy is a Python library that can be used to work with arrays. We can utilize the help of this package to get unique values from a list. Let us look at an example.

Code:

import numpy as np
def getuniquelist(values):
    assignlist = np.array(values)
    uniquelist = np.unique(assignlist)
    return list(uniquelist)
repeatedlist = [1,2,3,4,4,5,3,2,1]
print("Provided list:", repeatedlist)
print("Newlist: ", getuniquelist(repeatedlist))

Output:

Provided list: [1, 2, 3, 4, 4, 5, 3, 2, 1]
Newlist:  [1, 2, 3, 4, 5]

Note:

  • Before importing the NumPy package, we need to install NumPy using pip install numpy in the terminal.
  • Using np.array() will assign the list values to the NumPy array. By using np.unique() we can retrieve the unique list.

Option 2: Using Traversal Technique

We can traverse through the list and store each value in a new list using an if condition check to confirm we don’t have any repeated values.

Code:

def getuniquelist(values):
    newlist = []
    for x in values:
        if x not in newlist:
            newlist.append(x)
    return newlist
repeatedlist = [8,8,7,9,2,2,0,7]
print("Provided list:", repeatedlist)
print("Newlist: ", getuniquelist(repeatedlist))

Output:

Provided list: [8, 8, 7, 9, 2, 2, 0, 7]
Newlist:  [8, 7, 9, 2, 0]

Option 3: Using Python sets

The set() function, by default, stores a value once even if it is added more than once. So by storing all the values from the list to set, we can achieve unique occurrences.

Code:

def getuniquelist(value):
    assignset = set(value)
    uniquelist = list(assignset)
    return uniquelist
repeatedlist = ["vinod", "greg", "john", "john", "john"]
print("Provided list:", repeatedlist)
print("Newlist: ", getuniquelist(repeatedlist))

Output:

Provided list: ['vinod', 'greg', 'john', 'john', 'john']
Newlist:  ['john', 'greg', 'vinod']