因此,我正在尝试改进此脚本,如果相邻项目相等,它将返回布尔值。
from typing import List, Dict, TextIO, Tuple
def adjacent_match(L: List[str]) -> bool:
"""Return True iff two adjacent items in L are equal.
>>> adjacent_match(['A', 'B', 'B'])
True
>>> adjacent_match(['A', 'B', 'A'])
False
"""
result = False
for index in range(len(L)):
if len(L) == 0:
return result
elif index == 0:
result = L[index] == L[index + 1]
elif 0 < index < (len(L) - 1):
result = (L[index] == L[index + 1] or L[index] == L[index - 1])
elif index == (len(L) - 1):
result = L[index] == L[index - 1]
if result == True:
return result
return result
所以我觉得可以使用while
循环来改进此脚本,但对我而言不起作用,我的目标是在不使用模块的情况下缩短它,有什么建议吗?
答案 0 :(得分:0)
您可以使用zip
(内置的,不需要导入)来检查邻接条件:
def adjacent_match(L):
for x, y in zip(L, L[1:]):
if x == y:
return True
return False
示例运行:
>>> adjacent_match(['A', 'B', 'B'])
True
>>> adjacent_match(['A', 'B', 'A'])
False
答案 1 :(得分:0)
使用enumerate()
遍历列表中的项目,并跟踪项目在列表中的位置。
对于第二个和后续位置中的每个项目,请将其与上一个项目进行比较。
def adjacent_match(L):
for position, item in enumerate(L):
if position == 0:
continue
if item == L[position-1]:
return True
return False
答案 2 :(得分:0)
只需遍历输入数组中的每个元素(使用索引),但最后一个避免索引错误,然后将其与下一个元素进行比较:
def adjacent_match(arr):
for i in range(len(arr) - 1):
if arr[i] == arr[i + 1]:
return True
return False