如何使用remove()删除列表中项目的第二个匹配项,而不删除Python中的第一个匹配项 a=[9,8,2,3,8,3,5]

如何使用remove()删除列表中项目的第二个匹配项,而不删除Python中的第一个匹配项 a=[9,8,2,3,8,3,5],python,python-3.x,Python,Python 3.x,如何使用remove()删除第二次出现的8而不删除第一次出现的8。remove()从列表中删除与指定值匹配的第一项。要删除第二次出现的项目,可以使用del而不是remove。代码应该简单易懂,我使用count跟踪项目出现的次数,当count变为2时,元素被删除 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 = c

如何使用remove()删除第二次出现的8而不删除第一次出现的8。

remove()从列表中删除与指定值匹配的第一项。要删除第二次出现的项目,可以使用del而不是remove。代码应该简单易懂,我使用count跟踪项目出现的次数,当count变为2时,元素被删除

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)

下面是一种使用
itertools.count
和生成器执行此操作的方法:

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]

我不清楚为什么这个特定任务需要循环:

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)

如果需要删除目标项的第二次和后续事件,请选择此选项:

# deleting second and following occurrence of target item
a = [9,8,2,3,8,3,5]
b = []
target = 8 # target item
for i in a:
    if i not in b or i != target:
        b.append(i)
a=b
print(a)
# [9, 8, 2, 3, 3, 5]
# deleting specific occurence of target item only (use parameters below)
a = [9,8,2,3,8,3,5,8,8,8]
b = []

# set parameters
target = 8 # target item
occurence = 2 # occurence order number to delete

for i in a:
    if i == target and occurence-1 == 0:
        occurence = occurence-1
        continue
    elif i == target and occurence-1 != 0:
        occurence = occurence-1
        b.append(i)
    else:
        b.append(i)
a=b
print(a)
# [9, 8, 2, 8, 3, 5, 8, 8, 8]
如果需要删除任何项目的第二次和后续事件:

现在,当您需要删除目标项的第二次出现时:

# deleting second and following occurrence of target item
a = [9,8,2,3,8,3,5]
b = []
target = 8 # target item
for i in a:
    if i not in b or i != target:
        b.append(i)
a=b
print(a)
# [9, 8, 2, 3, 3, 5]
# deleting specific occurence of target item only (use parameters below)
a = [9,8,2,3,8,3,5,8,8,8]
b = []

# set parameters
target = 8 # target item
occurence = 2 # occurence order number to delete

for i in a:
    if i == target and occurence-1 == 0:
        occurence = occurence-1
        continue
    elif i == target and occurence-1 != 0:
        occurence = occurence-1
        b.append(i)
    else:
        b.append(i)
a=b
print(a)
# [9, 8, 2, 8, 3, 5, 8, 8, 8]

count(1)
如果你在
dela[i]
之后打破
就更好了,因为所有进一步的努力都白费了。是的,这会更好,因为他希望第二次出现固定项目。