How to remove 2nd occurrence of an item in a list using remove() without removing 1st occurrence in Python

前端 未结 3 725
余生分开走
余生分开走 2020-12-04 03:09
a = [9,8,2,3,8,3,5]

How to remove 2nd occurrence of 8 without removing 1st occurrence of 8 using remove().

相关标签:
3条回答
  • 2020-12-04 03:45

    remove() removes the first item from the list which matches the specified value. To remove the second occurrence, you can use del instead of remove.The code should be simple to understand, I have used count to keep track of the number of occurrences of item and when count becomes 2, the element is deleted.

    a = [9,8,2,3,8,3,5]
    item  = 8
    count = 0
    for i in range(0,len(a)-1):
            if(item == a[i]):
                   count =  count + 1
                   if(count == 2):
                          del a[i]
                          break
    print(a)
    
    0 讨论(0)
  • 2020-12-04 03:56

    Here's a way you can do this using itertools.count along with a generator:

    from itertools import count
    
    def get_nth_index(lst, item, n):
        c = count(1)
        return next((i for i, x in enumerate(lst) if x == item and next(c) == n), None)
    
    a = [9,8,2,3,8,3,5]  
    indx = get_nth_index(a, 8, 2)
    if indx is not None:
        del a[indx]
    
    print(a)
    # [9, 8, 2, 3, 3, 5]
    
    0 讨论(0)
  • 2020-12-04 03:56

    It's not clear to me why this specific task requires a loop:

    array = [9, 8, 2, 3, 8, 3, 5]
    
    def remove_2nd_occurance(array, value):
    
        ''' Raises ValueError if either of the two values aren't present '''
    
        array.pop(array.index(value, array.index(value) + 1))
    
    
    remove_2nd_occurance(array, 8)
    
    print(array)
    
    0 讨论(0)
提交回复
热议问题