gpt4 book ai didi

Python:遍历列表并删除重复项(不使用 Set())

转载 作者:行者123 更新时间:2023-11-28 19:47:27 24 4
gpt4 key购买 nike

所以我有一个列表:

s = ['cat','dog','cat','mouse','dog']

而且我希望能够在不使用 set() 函数的情况下遍历列表并删除重复项!因此,例如它应该删除“猫”和位置 s[2],但将“猫”保留在位置 s[0]。然后它需要为“狗”做同样的事情,即。将 'dog' 保留在位置 s[1] 但从位置 s[4] 移除 'dog'。

那么输出是:

s = ['cat','dog','mouse']

我试过用i和j作为列表中的索引位置,检查位置i的元素是否等于位置j的元素。如果是,它将删除它并将 j 的值增加 1,如果不是,它将保留它并只增加 j 的值。遍历整个列表后,它将递增 i 的值,然后再次检查整个列表以查找新元素。下面:

i = 0
j = 1
for a in range(len(s)):
for b in range(len(s)):
if s[i] == s[j]:
s.remove(s[j])
j = j + 1
else:
j = j + 1
i = i + 1

我在这里做错了什么?

最佳答案

问题在于“自动”for 循环——在修改循环遍历的内容时必须小心使用它们。这是正确的解决方案:

def remove_dup(a):
i = 0
while i < len(a):
j = i + 1
while j < len(a):
if a[i] == a[j]:
del a[j]
else:
j += 1
i += 1

s = ['cat','dog','cat','mouse','dog']
remove_dup(s)
print(s)

Output: ['cat', 'dog', 'mouse']

这个解决方案是就地的,修改原始数组而不是创建一个新数组。它也不使用任何额外的数据结构。

关于Python:遍历列表并删除重复项(不使用 Set()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43623304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com