首页 > 解决方案 > 如果它们具有相同的顺序但从不同的索引开始,如何从 python 列表中删除嵌套列表项

问题描述

如何从嵌套列表中删除“循环相似”列表。如果两个列表在一些循环旋转后相同,则它们是“循环相似的”。例如 [1,2,3,4]是循环相似的,[3,4,1,2]因为[1,2,3,4]旋转了 2 是[3,4,1,2]

假设我有以下列表:

list = [[1, 1, 0], [0, 1, 1], [1, 1, 1]]

我想[0, 1, 1]删除,因为它与旋转 2 后循环相似[1, 1, 0]。我应该如何解决这个问题?

标签: python

解决方案


您首先需要检查两个列表在轮换时是否相同

# not very efficient algorithm but it works
# you can also import deque from collections for rotation operation

def is_circular_equal(a,b):
   if len(a) != len(b):
      return False  # if they are not of equal length
   for i in range(len(a)):
      if b == a[i:]+a[:i]:
         return True
   return False   

是关于如何做到这一点的另一篇文章。

然后遍历列表列表以检查每个列表是否 is_circular_equal


推荐阅读