如何使用remove()删除列表中项目的第二次出现而不在Python中删除第一次出现

时间:2019-06-23 07:18:40

标签: python python-3.x

a = [9,8,2,3,8,3,5]

如何在不使用remove()删除8次出现的情况下删除2次出现的情况。

4 个答案:

答案 0 :(得分:2)

以下是您可以使用(c, False)和生成器来执行此操作的方法:

itertools.count

答案 1 :(得分:1)

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)

答案 2 :(得分:1)

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

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)

答案 3 :(得分:0)

如果您需要删除第二个和以下目标项目,请使用此方法:

canvas {background: #ffffff; }

如果您需要删除第二个和以下出现的任何项目

# 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 any second and following occurence of each item
a = [9,8,2,3,8,3,5]
b = []
for i in a:
    if i not in b:
        b.append(i)
a=b
print(a)
# [9, 8, 2, 3, 5]