从列表中删除重复项

2024-05-08 22:24:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含大约300个列表的列表,但是其中有些是重复的,我想删除它们。我试过:

cleanlist = [cleanlist.append(x) for x in oldlist if x not in cleanlist]

但它总是朝我扔RuntimeError: maximum recursion depth exceeded in comparison。我试过sys.setrecursionlimit(1500),但没用。在

有什么更好的方法?在


Tags: in列表forifsysnotcomparisondepth
2条回答

疯狂的解决方案。或许这有助于:

oldlist = [[1,2,3], [1,2,3], [4,5,6], [7,8], [7,8]]
cleanlist = set(tuple(x) for x in oldlist)
print(list(cleanlist))

>>> [(7, 8), (4, 5, 6), (1, 2, 3)]

对于列表列表,请使用以下命令:

^{pr2}$

您将根据cleanlist是否在cleanlist中添加一堆内容(它还不存在),然后将从append()操作(即None)返回的值保存到cleanlist。不会有好结果的。在

更好的方法可能是使用老式的循环结构:

cleanlist = []
for x in oldlist:
    if x not in cleanlist:
        cleanlist.append(x)

相关问题 更多 >