While循环条件:复合条件表达式和'd[python]

2024-06-01 02:52:34 发布

您现在位置:Python中文网/ 问答频道 /正文

对于真正微不足道的入门级python问题,我深表歉意。在

目前正在学习googlepython教程,并找到了一些如果我不确定的话可能会让我绊倒的东西-使用and'd值作为while循环执行的复合条件。在

通读它,似乎while循环在两个列表的长度都为正的情况下运行。因此,一旦两个列表的长度==0,while循环就会到达0并终止。在

我不确定如何从心理上分析这个问题——条件是,一旦两个长度都==0,那么and语句和0和0,给出一个负条件并终止。在

通读它时,我将其解析为“5”和“6”(如果实例5和6是列表的长度)。到目前为止,我还没有遇到过以这种方式使用while循环的情况(只使用了一天左右)。在

我没有得到的代码位(抽象行)

while len(list1) and len(list2):

上下文中的代码

^{pr2}$

谢谢。在


Tags: and实例代码列表len方式情况教程
3条回答

理解这一点的关键是^{}语句。在

基本上,该函数将两个已排序的列表合并为一个包含两个列表的所有元素的列表。它是mergesort算法的一部分。其工作原理如下:

  • 只要两个列表都包含剩余元素,就重复下面的循环
    • 从列表的顶部选择较小的元素(即第一个元素)
    • 从相应的列表中删除元素并将其添加到结果列表中
    • 重复
  • 那么,至多其中一个列表仍然包含元素。将该列表的其余元素添加到结果中。在

引用Python官方文档中的Built In Types Page

x and y根据:if x is false, then x, else y给出结果

本页进一步提到:

This is a short-circuit operator, so it only evaluates the second argument if the first one is True

所以在您的问题中,它首先计算len(列表1)。如果为正,则第一个条件为真,然后计算第二个条件。如果这也是真的(即len(list2)>;=1,则进入循环。虽然从根本上说,这是一个操作,但不同的是,如果第一个条件是错误的,我们就不需要评估第二个条件。这在某些情况下非常有用,因为第二个条件可能涉及耗时的计算。在

while len(list1) and len(list2):

将继续循环,而list1和list2都不为空;如果其中一个列表为空,则循环将终止。在

(在布尔上下文中,除FalseNone0""、或{}之外的任何值都将计算为true。)

相关问题 更多 >