【发布时间】:2020-10-25 02:15:05
【问题描述】:
我的问题是我想写一个函数newlist,它接受一个数字的list作为参数。然后它根据参数返回一个新列表。新列表包含与原始列表相同的值,直到达到数字 7。
我的代码有效:
def newlist(mylst):
newlst = []
idx = 0
while (idx < len(mylst)) and (mylst[idx] != 7):
newlst.append(mylst[idx])
idx += 1
return newlst
现在当我像这样切换and 语句的两侧时:
while (mylst[idx] != 7) and (idx < len(mylst)):
它告诉我这是错误的,当传递一个列表作为参数时,索引是
超出范围。我的问题是为什么它与我开始的and 语句的哪一侧有区别?我认为布尔值只有在两个语句都为 True 时才为 True,而不管顺序如何?
【问题讨论】:
-
如果您的列表有 10 个数字,并且 5 个不是其中之一,则 while 循环将继续直到您的 idx ==11,并且您的条件之一
mylst[idx]将尝试找到第 11 个10 值列表的值。 -
请参考answer
标签: python while-loop boolean logical-operators