python - 查找第一个元素等于第二个元素加一的元组

标签 python python-2.7 list tuples

给定一个元组列表:

total = [(4, 0), (2, 1), (1, 2), (3, 3)]

我想检查每个元组中是否第一个数字 == 第二个数字 + 1。 如果它们相等,我需要返回 False,否则返回 True

我尝试了两种不同的方法,但都只检查第一个元组 ((4, 0)) 然后返回 True,尽管它应该返回 False (因为第二个元组 (2, 1)2 == 1 + 1)。

尝试 #1:

for tuples in total:
    if tuples[0]==(int(tuples[1])+1):
        return False
    else:
        return True

尝试 2:

for a,b in total:
    if a==b+1:
        return False
    else:
        return True

我做错了什么?

最佳答案

您只测试列表中的第一个 元组。 return 结束函数。

在您决定返回Truei 之前测试所有 元组:

for a, b in total:
    if a == b + 1:
        return False
return True

所以当测试第一个元组时,a == b + 1 测试仍然是假的,所以你继续测试下一个元组。此时 (2, 1) 被测试并返回 False。如果您要从输入中删除 (2, 1) 元组,则 for 循环结束并到达 return True 行。

您可以使用 all() function ,加上逆检验(不等于)使上面的循环更紧凑:

return all(a != b + 1 for a, b in total)

当找到符合条件的元组时返回 False,否则返回 True

关于python - 查找第一个元素等于第二个元素加一的元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47609335/

相关文章:

Python - 分割文件

python检查字典是否在列表中

python - 将一个K长度的列表拆分为尽可能 "even"的L个子列表,即使K/L留有余数

python - 如何根据特定标准对列表进行排序

python - NLTK ConditionalFreqDist 到 Pandas 数据帧

python - rc.local 和 python 脚本

python-2.7 - 生成代码文档时如何排除意外缩进警告的原因?

Python 2.7 Argparse 是或否输入

python - 如何在 django admin 中订购只读 M2M 字段

python - 使用 conda-forge 作为 Anaconda 的默认 channel 在 Mac Pro M1 上安装软件包