📌  相关文章
📜  Python|检查两个列表是否循环相同(1)

📅  最后修改于: 2023-12-03 15:04:26.383000             🧑  作者: Mango

Python | 检查两个列表是否循环相同

有时候我们会遇到对比两个列表是否相同的情况,但是这两个列表存在可能循环到达相同的情况,例如:

list1 = [1, 2, 3, 4, 5]
list2 = [4, 5, 1, 2, 3]

从以上两个列表可以看到,它们元素去向不同,但是它们并不属于不同的列表。在Python中,我们可以使用以下方法来检查两个列表是否循环相同。

方法一:使用切片和列表循环

将第一个列表循环一遍,每次与第二个列表的切片进行比较,如果相同则返回True,否则返回False。

def is_circular(list1, list2):
    if len(list1) != len(list2):
        return False
    for i in range(len(list1)):
        if list1[i:] + list1[:i] == list2:
            return True
    return False
方法二:使用in关键字和列表循环

对于方法一,每次循环都需要对列表进行切片,然后再进行比较,可能会比较费时。这时候我们可以使用in关键字,每次将第一个列表向右移动一个单位,判断是否存在于第二个列表中。

def is_circular(list1, list2):
    if len(list1) != len(list2):
        return False
    for i in range(len(list1)):
        if all(list1[(i+j)%len(list1)]==list2[j] for j in range(len(list1))):
            return True
    return False
方法三:使用列表推导式和zip函数

列表推导式中可以嵌套循环,我们可以使用zip函数将两个列表同时循环,并且使用列表推导式来判断它们是否循环相同。

def is_circular(list1, list2):
    if len(list1) != len(list2):
        return False
    return any([all(x == y for x, y in zip(list1[i:] + list1[:i], list2)) for i in range(len(list1))])

以上三种方法都可以在Python中实现列表循环比较。方法一使用了切片和列表循环方式,方法二使用了in关键字和列表循环方式,方法三则使用了列表推导式和zip函数。该程序员朋友,你可以根据自己的需要,选择合适的方法使用哦!

参考资料