如何查找列表中是否连续有2个相同值的元素?

How to find if there are 2 elements of same value consecutively in a list?

例如, [1,3,3,5] 应该 return True[1,3,1,3] 应该 return False.

我正在寻找使用循环的简单解决方案。

我尝试了以下方法:

def conseq(nums):
    for i in range (len(nums)):
        if nums[i]==nums[i+1]:
            return True
            break
        else:
            return False

在循环完成之前,您不能 return False(因为匹配项可能在您尚未检查的列表部分)。 return 之后的 break 将永远不会发生(因为 return 结束函数及其中的所有内容)。

return结束函数,所以这里也会停止处理 你的 true 语句大部分有效,break 是不必要的

在 for 循环结束之前您不需要 else 语句(它 return 仅当其他所有内容都已被解析时才为 False)

还有你解析代码的方式,当你在最后的 nums 时,nums 无法访问 nums[i+1] 所以你需要范围 len(nums) - 1

如果您想放置一个什么都不做的 else,我相信您可以使用一个分号或 pass,但这里不需要 else

def conseq(nums):
    for i in range (len(nums)-1):

        if nums[i]==nums[i+1]:
            return True
        else:
            ;
    return False

您的函数第一次遇到 2 个不同的连续数字时,它 returns False。从函数返回会立即结束该函数,此后该函数不会继续。这也是为什么 break 不是必需的。

您的代码的另一个问题是,一旦您达到最终数字,nums[i + 1] 将超出数组的范围。这就是为什么您应该遍历 len(nums) - 1 而不是 len(nums) - 没有理由检查最终数字,因为它后面没有任何内容。

def conseq(nums):
    for i in range(len(nums) - 1):
        if nums[i]==nums[i+1]:
            return True

    # Only return False once we've exhausted all numbers.
    # Since we didn't return True so far - it means there are
    # no consecutive equal numbers, so we can safely return False
    return False

枚举没有最后一个的列表(以避免 i+1 的 try catch 超出范围)然后将每个项目与下一个项目进行比较,如果它们相同则 return True。在循环 return False 之后因为 none 是相似的(returns 中断函数)

def function(number_list):
    for i, item in enumerate(number_list[:-1]):
        if item == number_list[i+1]:
            return True
    return False
def conseq(nums):
    for i in range (len(nums)):
        if nums[i]==nums[i-1]:
            return True    
    return False


我修改了你的代码。请查看并告知是否有用

def conseq(nums):
    flag=True
    for i in range (len(nums)-1):
        if nums[i]==nums[i+1]:
            print(True)
            flag=False
            break
        else:
            continue
    if(flag):
        print(False)
nums=[1,3,3,5]
nums1=[1,3,1,3]
conseq(nums)
conseq(nums1)

我们这里已经有很多解决方案了。我试过使用 numpy 没有循环:

>>> import numpy as np
>>> f = np.array([1,3,3,5])
>>> (np.where(np.diff(f) == 0)[0]).astype('bool')[0] #check if we have any difference of two elements 0?
True