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

前端 未结 30 1568
梦谈多话
梦谈多话 2020-11-22 00:56

How can I find the duplicates in a Python list and create another list of the duplicates? The list only contains integers.

30条回答
  •  北海茫月
    2020-11-22 01:18

    Method 1:

    list(set([val for idx, val in enumerate(input_list) if val in input_list[idx+1:]]))
    

    Explanation: [val for idx, val in enumerate(input_list) if val in input_list[idx+1:]] is a list comprehension, that returns an element, if the same element is present from it's current position, in list, the index.

    Example: input_list = [42,31,42,31,3,31,31,5,6,6,6,6,6,7,42]

    starting with the first element in list, 42, with index 0, it checks if the element 42, is present in input_list[1:] (i.e., from index 1 till end of list) Because 42 is present in input_list[1:], it will return 42.

    Then it goes to the next element 31, with index 1, and checks if element 31 is present in the input_list[2:] (i.e., from index 2 till end of list), Because 31 is present in input_list[2:], it will return 31.

    similarly it goes through all the elements in the list, and will return only the repeated/duplicate elements into a list.

    Then because we have duplicates, in a list, we need to pick one of each duplicate, i.e. remove duplicate among duplicates, and to do so, we do call a python built-in named set(), and it removes the duplicates,

    Then we are left with a set, but not a list, and hence to convert from a set to list, we use, typecasting, list(), and that converts the set of elements to a list.

    Method 2:

    def dupes(ilist):
        temp_list = [] # initially, empty temporary list
        dupe_list = [] # initially, empty duplicate list
        for each in ilist:
            if each in temp_list: # Found a Duplicate element
                if not each in dupe_list: # Avoid duplicate elements in dupe_list
                    dupe_list.append(each) # Add duplicate element to dupe_list
            else: 
                temp_list.append(each) # Add a new (non-duplicate) to temp_list
    
        return dupe_list
    

    Explanation: Here We create two empty lists, to start with. Then keep traversing through all the elements of the list, to see if it exists in temp_list (initially empty). If it is not there in the temp_list, then we add it to the temp_list, using append method.

    If it already exists in temp_list, it means, that the current element of the list is a duplicate, and hence we need to add it to dupe_list using append method.

提交回复
热议问题