初学者Python用户布尔查询

时间:2018-10-24 21:21:01

标签: python

CodeAcademy的Python课程正在通过循环函数运行我,但我不了解结果。目的是查看一个列表是否是另一个列表的镜像。即[1,2,3]至[3,2,1]

20分钟后,我查看了解决方案,但我不明白为什么每次都不返回True?:

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

“返回True”的缩进级别与“用于索引”的缩进级别相同,这将覆盖前一行返回的任何值。

或者,当我在“ if”缩进处引入“ else”时,一切都返回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

任何人都可以帮助菜鸟吗?

4 个答案:

答案 0 :(得分:1)

return False导致函数在返回False时完全退出,因此在这种情况下永远不会到达return True行。放置早期返回语句是一种中断函数执行的方式

答案 1 :(得分:0)

如果您的语句if lst1[index] != lst2[len(lst2)-1-index]找不到任何不匹配的项目,那么我们的函数将立即结束。将不再执行任何代码。

添加else语句时,意味着如果有任何匹配的项目,该函数将返回True,并且将不再执行任何代码。

答案 2 :(得分:0)

您建议的第一和第二代码给出不同的输出。 而且您应该知道函数只能使用一次return

帮助打印中间结果的方法。

1

def reversed_list(lst1, lst2):
  for index in range(len(lst1)):
    print(index)

    if lst1[index] != lst2[len(lst2)-1-index]:
      print('False')
      return False

  print('True')
  return True

2

def reversed_list(lst1, lst2):
  for index in range(len(lst1)):
    print(index)

    if lst1[index] != lst2[len(lst2)-1-index]:
      print('False')
      return False
    else:
      print('True')
      return True

使用添加的行运行我的代码,这些代码将显示您的中间结果。您将看到第二个函数只会迭代第一个元素,然后返回TrueFalse

答案 3 :(得分:0)

在第一种情况下,return True是函数的结尾。您必须遍历整个range(len(lst1))才能到达。因此,如果匹配循环中if的条件,则执行return False语句,然后函数在此处结束。

在第二种情况下,您永远不会遍历整个列表。在第一次迭代中,检查条件lst1[index] != lst2[len(lst2)-1-index],其中index = 0并返回True或False。