如何确定数组是否包含数字3,以及两个相邻的3是否相邻

时间:2020-03-09 06:59:02

标签: python

给出一个整数列表,例如:

lst = [3,3,6,5,8,3,4,5]

然后,我使用列表推导来找出数字3在该列表中出现在哪个索引上:

[i for i, x in enumerate(lst) if x == 3]

但是现在我不知道如何确定数字3是否紧挨着另一个3,然后将其返回为True

3 个答案:

答案 0 :(得分:3)

您可以使用zip()来成对循环遍历数据:

any(a == b == 3 for a, b in zip(lst, lst[1:]))

链接比较然后检查 a b 是否都等于 3 。函数any()检查是否所有更改的比较都是正确的。

FWIW,另一种循环 pairwise()的方法在文档的itertools recipes部分中显示。

希望这会有所帮助:-)

答案 1 :(得分:0)

但是现在我不知道如何确定数字3是否紧挨着另一个3,然后将其返回为True

好吧,因为您的结果是一个可以找到3的所有索引的列表,所以您只需检查任意两个连续的索引,看看它们是否相差仅1。

可悲的是,“窗口式”迭代器仍不属于标准库,但是复制它们很容易:

indices = [3,3,6,5,8,3,4,5]
for i, j in zip(indices, indices[1:]):
    ...

答案 2 :(得分:0)

这是另一种非常简单的方法(有点复杂)

def check(index, lst):
    if index > 0 and lst[index] == lst[index - 1] and lst[index] == 3:
        return True
    if index < len(lst) and lst[index] == lst[index + 1] and lst[index] == 3:
        return True
    return False

lst = [3,3,6,5,8,3,4,5]
for index in range(len(lst)):
    print(check(index, lst))

输出:

True
True
False
False
False
False
False