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 fori+1
超出范围),然后将每个项目与下一个项目进行比较,如果它们相同,则返回True
。在循环之后返回False
,因为没有一个函数是相同的(返回中断函数)
枚举不带last的列表(以避免try catch fori+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是否有任何差异?
真的
您应该在列表中说明您的代码存在哪些问题。这是否回答了您的问题?您应该在清单中说明您的代码存在哪些问题。这是否回答了您的问题?