如何放置 return 语句来比较两个列表中的所有值?

How to place return statement for comparison of all values in two lists?

早上好,我正在尝试找出比较两个列表时哪里出错了

def reversed_list(lst1, lst2):
  for index in range(len(lst1)):
    if (lst1[index] != lst2[len(lst2) - 1 - index]):
      return False
    else:
      return True




#Uncomment the lines below when your function is done
print(reversed_list([1, 2, 3], [3, 2, 1]))
print(reversed_list([1, 5, 3], [3, 2, 1]))

但是我对这两个值都为真。

搜索 Codecacademy 论坛后,我认为问题在于我的功能只是执行一次比较,然后继续执行 return 语句。

我该怎么做?我的印象是它必须遍历所有项目直到它到达末尾,但我想它会有多个布尔值。

我正在使用 http://pythontutor.com/visualize.html#mode=edit 逐行执行代码,但我仍然迷路了。谁能告诉我是否需要创建另一个对象来保存循环遍历的布尔值,然后在最后比较它们,或者它是否是我的 return 函数的位置?

谢谢

您的代码中的问题是您在循环的第一次迭代中 return(无论您的条件是 True 还是 False,您在 return你的代码块)。

您应该将代码更改为:

def reversed_list(lst1, lst2):
  for index in range(len(lst1)):
    if (lst1[index] != lst2[len(lst2) - 1 - index]):
      return False
  return True

附带说明一下,更简单的解决方案是:

def reversed_list(lst1, lst2):
    return lst1 == lst2[::-1]

在函数调用中,一旦 return 被调用,那么 return 语句之后的所有过程和代码流都不会处理,结果将被传递,以添加那个 return 语句。

在你的例子中,你试图找出 list1 和 list2 的第一个和最后一个元素是否相同。如果不相同则 return False,如果相同则 return true。这是错误的,因为您只检查一个元素并且 returning 结果仅根据该元素

实际方法,你需要做的检查是找到与另一个列表中的元素不相等的元素,如果一旦找到这样的元素(意味着不是反向列表)然后立即停止处理其他元素并且return 错误。如果在处理完所有元素后没有出现假条件,这意味着列表是可逆的然后 return True

以下是您更正后的代码

# your code goes here
def reversed_list(lst1, lst2):
  if len(lst1)!=len(lst2):
       return False
  for index in range(len(lst1)):
    if (lst1[index] != lst2[len(lst2) - 1 - index]):
      return False
  return True