python - 如果它们具有相同的顺序但从不同的索引开始,如何从 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]
。我应该如何解决这个问题?
解决方案
您首先需要检查两个列表在轮换时是否相同
# 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
推荐阅读
- javascript - 开发和生产的 Firebase 配置文件
- python - 如何配置 tox 使其产生轮子?
- reactjs - 如何允许删除 React Material-UI Input Field 组件中的所有字符
- matlab - MATLAB 中 for 循环期间的条件语句
- mysql - 如何计算 MySQL 查询中相似行的总数
- r - 如何更改绘图中“小时:分钟”变量的比例显示?
- c# - 使用 Entity Framework 和 cosmos db 更新实体
- ssh - 仅从 ZeroTier 网络内通过 SSH 连接到服务器
- python - 两行数据之间的等间距放入数据框中,仅用于一列
- batch-file - 如何进行循环并检查文件夹.bat中是否存在多个文件