a = [9,8,2,3,8,3,5]
How to remove 2nd occurrence of 8 without removing 1st occurrence of 8 using remove().
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)
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]
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)