所以我有一個列表:的Python:遍歷目錄並刪除重複(不使用設置())
s = ['cat','dog','cat','mouse','dog']
而且我希望能夠通過列表進行迭代並刪除重複的,不使用set()函數!因此,例如它應該刪除'貓'和位置s [2],但保持'貓'在位置s [0]。然後它需要爲'狗'做同樣的事情,即。在位置s [1]保持'狗',但從位置s [4]移除'狗'。
所以輸出則爲:
s = ['cat','dog','mouse']
我曾嘗試使用i和j作爲列表索引位置,檢查是否我在位置上的元素等於在位置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
我在做什麼錯在這裏?
使用的,而不是==。如果該值不在該數組中,則將它們存儲在一個分段數組中。 –
是否有任何理由需要更新該列表與創建新列表? 'l = []; for e in s:if e not in l:l.append(e)' – AChampion
另一個問題是你遍歷所有索引直到列表的末尾。如果實際上有任何重複項,那麼當您到達那裏時,列表將會縮短,您將得到一個IndexError。 – zondo