如何放置 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
早上好,我正在尝试找出比较两个列表时哪里出错了
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