W3docs

How do I find the duplicates in a list and create another list with them?

In Python, one way to find duplicates in a list and create another list with them is to use a for loop and an if statement.

In Python, one way to find duplicates in a list and create another list with them is to use a for loop and an if statement. Here is an example code snippet:

Find duplicates in a list and create another list with them in Python

original_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8]
duplicate_list = []

for i in original_list:
    if original_list.count(i) > 1:
        if i not in duplicate_list:
            duplicate_list.append(i)

print(duplicate_list)

This code first creates an empty list called "duplicate_list" to store the duplicates. Then, it iterates through the elements of the "original_list" using a for loop. For each element, it checks if the count of that element in the "original_list" is greater than 1 (i.e., if it is a duplicate). If it is, it then checks if the element is already in the "duplicate_list", and if not, it adds it to the "duplicate_list". Finally, it prints out the "duplicate_list".

Alternatively, you can use a list comprehension to achieve the same logic more concisely. Note that this approach returns each duplicate multiple times:

Find duplicates in a list and create another list with them in Python using list comprehension

original_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8]
duplicate_list = [item for item in original_list if original_list.count(item) > 1]
print(duplicate_list)

This code snippet uses list comprehension and the count() function to filter elements that appear more than once. Like the first approach, it has O(n²) time complexity because count() scans the list for every item. For larger datasets, or when you need unique duplicates only, collections.Counter is more efficient:

Find duplicates in a list using collections.Counter

from collections import Counter

original_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8]
counts = Counter(original_list)
duplicate_list = [item for item, count in counts.items() if count > 1]

print(duplicate_list)

This approach counts all elements in a single pass (O(n) time complexity) and filters those with a count greater than 1, ensuring each duplicate appears only once in the result.