查找整数列表中是否连续出现一个整数
Find if there are consecutive occurrences of an int in a list of ints
我正在研究 Python online exercise。
任务是:
给定一个整数数组,return 如果数组某处的 2 旁边包含一个 2,则为真。
has22([1, 2, 2]) → 真
has22([1, 2, 1, 2]) → 假
has22([2, 1, 2]) → 假
目前我得到的代码:
def has22(nums):
for i in range (len(nums)-1):
if nums[i+1]==2 and nums[i]==2:
return True
break
将 return 所有 True
实例,但我想不出一种方法来包含 False
实例的语句(我想坚持使用控制流解决方案) .有什么建议吗?
你不需要 break after return 语句,你只需要在你的 for 循环中添加 "return False" 语句
def has22(nums):
for i in range (len(nums)-1):
if nums[i+1]==2 and nums[i]==2:
return True
return False
您可以使用 any
and a generator expression:
来简化您的函数
def has22(nums):
return any(nums[i+1] == nums[i] == 2 for i in range(len(nums)-1))
演示:
>>> def has22(nums):
... return any(nums[i+1] == nums[i] == 2 for i in range(len(nums)-1))
...
>>> has22([1, 2, 2])
True
>>> has22([1, 2, 1, 2])
False
>>> has22([2, 1, 2])
False
>>>
我正在研究 Python online exercise。
任务是:
给定一个整数数组,return 如果数组某处的 2 旁边包含一个 2,则为真。 has22([1, 2, 2]) → 真 has22([1, 2, 1, 2]) → 假 has22([2, 1, 2]) → 假
目前我得到的代码:
def has22(nums):
for i in range (len(nums)-1):
if nums[i+1]==2 and nums[i]==2:
return True
break
将 return 所有 True
实例,但我想不出一种方法来包含 False
实例的语句(我想坚持使用控制流解决方案) .有什么建议吗?
你不需要 break after return 语句,你只需要在你的 for 循环中添加 "return False" 语句
def has22(nums):
for i in range (len(nums)-1):
if nums[i+1]==2 and nums[i]==2:
return True
return False
您可以使用 any
and a generator expression:
def has22(nums):
return any(nums[i+1] == nums[i] == 2 for i in range(len(nums)-1))
演示:
>>> def has22(nums):
... return any(nums[i+1] == nums[i] == 2 for i in range(len(nums)-1))
...
>>> has22([1, 2, 2])
True
>>> has22([1, 2, 1, 2])
False
>>> has22([2, 1, 2])
False
>>>