Python 如何确定列表中是否连续有两个值相同的元素?

Python 如何确定列表中是否连续有两个值相同的元素?,python,list,loops,python-3.7,Python,List,Loops,Python 3.7,比如说,, [1,3,3,5]应返回True,而[1,3,1,3]应返回False 我正在寻找一个使用循环的简单解决方案 我尝试了以下方法: def conseq(nums): for i in range (len(nums)): if nums[i]==nums[i+1]: return True break else: return False 在循环完成之前,您不能返回Fal

比如说,,
[1,3,3,5]
应返回
True
,而
[1,3,1,3]
应返回
False

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

我尝试了以下方法:

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

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

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

返回结束函数,因此在这里它也将停止处理 你的真实陈述大部分是有效的,休息是不必要的

在for循环结束之前,您不需要else语句(仅当其他所有内容都已解析时,它才会返回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

返回结束函数,因此在这里它也将停止处理 你的真实陈述大部分是有效的,休息是不必要的

在for循环结束之前,您不需要else语句(仅当其他所有内容都已解析时,它才会返回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

函数第一次遇到两个不同的连续数字时,将返回
False
。从函数返回时会立即结束该函数,之后该函数不会继续。这也是为什么不需要中断
的原因

代码的另一个问题是,一旦达到最终数字,
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

函数第一次遇到两个不同的连续数字时,将返回
False
。从函数返回时会立即结束该函数,之后该函数不会继续。这也是为什么不需要中断
的原因

代码的另一个问题是,一旦达到最终数字,
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

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


枚举不带last的列表(以避免try catch for
i+1
超出范围),然后将每个项目与下一个项目进行比较,如果它们相同,则返回True
。在循环之后
返回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)

我修改了你的代码。如果有用,请检查并告知

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
而不使用循环:

>>将numpy作为np导入
>>>f=np.数组([1,3,3,5])
>>>(np.where(np.diff(f)==0)[0]).astype('bool')[0]#检查两个元素0是否有任何差异?
真的

我们已经有了很多解决方案。我尝试过使用
numpy
而不使用循环:

>>将numpy作为np导入
>>>f=np.数组([1,3,3,5])
>>>(np.where(np.diff(f)==0)[0]).astype('bool')[0]#检查两个元素0是否有任何差异?
真的

您应该在列表中说明您的代码存在哪些问题。这是否回答了您的问题?您应该在清单中说明您的代码存在哪些问题。这是否回答了您的问题?