python - 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('*')
解决方案
让我们退后一步,看看这个不使用任何循环。假设我们有一个空列表,如下所示:
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
。
推荐阅读
- html - 当另一个 div 滚动出 DOM 时如何显示一个 div
- sql - 如何在搜索功能中使用 NOT IN 和 LIKE?
- python - Faust for Python:如何启动 worker 来运行 hello world
- java - 调用 super.paint jframe 时的竞争条件
- c++ - 如何使用 x86 内在函数进行灰度 -> RGB 像素复制
- blazor - 如何在 Blazor 中使用 Azure App Config 中的功能标记?
- opengl - 是什么阻止了虚幻引擎中的 glGetTexImage?
- scala - 任务不可序列化 Spark
- python - Python csv 到嵌套 Json
- mysql - 在 Oracle 中使用 mode 参数计算 MySQL 的 WEEK 函数