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]
# 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]
现在,当您需要删除目标项的第**次出现时:
# 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]
5条答案
按热度按时间ymdaylpp1#
我不清楚为什么这个特定的任务需要一个循环:
pxq42qpu2#
下面是一种使用
itertools.count
沿着生成器来完成此操作的方法:lvjbypge3#
remove()从列表中删除第一个与指定值匹配的项。要删除第二次出现的元素,可以使用del而不是remove。代码应该很容易理解,我使用count来跟踪item的出现次数,当count变为2时,元素被删除。
mgdq6dx14#
python代码删除第二次出现
0qx6xfy65#
如果您需要删除目标项的第二个 * 和以下 * 次出现,则使用此选项:
如果您需要删除任何项目 * 的 * 第二次和随后的 * 出现次数 *:
现在,当您需要删除目标项的第**次出现时: