首页 > 解决方案 > python while循环内的条件顺序

问题描述

为什么在 while 循环中按条件排序会产生不同的结果。例如

nums = []
k=3
while (nums[-1]<k and nums ):
    print('*')

给出错误list index out of range

但是这个没有显示任何错误

nums = []
k=3
while( nums and nums[-1]<k ):
    print('*')

标签: pythonwhile-loop

解决方案


让我们退后一步,看看这个不使用任何循环。假设我们有一个空列表,如下所示:

nums = []

你希望nums[0]做什么?下面怎么样:

nums[-1]

在上述两种情况下,都会引发索引错误,因为列表nums是空的(它不包含任何元素,所以里面有元素nums可以访问)。

现在让我们让它变得更困难一些。以下情况如何:

last_num = nums and nums[-1] or None

实际上,这应该(大致)与以下内容相同:

last_num = nums[-1] if nums else None

上面的语法是实现“安全检查”的常见习惯用法,这意味着如果num是非空列表,则它检索最后一个元素,否则为默认值None


推荐阅读