为了账号安全,请及时绑定邮箱和手机立即绑定

如何找出数组是否包含数字3,以及是否有两个3彼此相邻

如何找出数组是否包含数字3,以及是否有两个3彼此相邻

qq_遁去的一_1 2022-08-25 14:56:46
给定一个整数列表,例如:lst = [3,3,6,5,8,3,4,5]然后,我使用列表理解来找出数字3出现在此列表中的索引:[i for i, x in enumerate(lst) if x == 3]但是现在我无法弄清楚如何查看数字3是否位于另一个3旁边,并将其返回为True
查看完整描述

3 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您可以使用 zip() 成对循环访问数据:

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

然后进行链式比较,以检查ab是否都等于3。函数 any() 检查这些更改的比较是否为真。

FWIW,另一种循环成对()的方法显示在文档的迭代工具食谱部分。

希望这有帮助:-)


查看完整回答
反对 回复 2022-08-25
?
波斯汪

TA贡献1811条经验 获得超4个赞

但是现在我无法弄清楚如何查看数字3是否位于另一个3旁边,并将其返回为True

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

可悲的是,“窗口化”迭代器仍然不是标准库的一部分,但复制它们很容易:

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


查看完整回答
反对 回复 2022-08-25
?
大话西游666

TA贡献1817条经验 获得超14个赞

这是另一种非常直接的方法(有点过度使用)


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


查看完整回答
反对 回复 2022-08-25
  • 3 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信