gpt4 book ai didi

Python:如何在不获取 IndexError 的情况下检查不存在的列表元素的值?

转载 作者:太空宇宙 更新时间:2023-11-04 07:00:37 24 4
gpt4 key购买 nike

我正在使用 Python 的单行条件语句:

x = 'foo' if myList[2] is not None else 'bar'

x 分配列表中特定索引处的项目的值 - 当且仅当它存在时 - 如果不存在则分配不同的值.

这是我的挑战:myList 最多可以有三个元素,但不会总是有三个。因此,如果索引不存在(即,如果所讨论的索引比列表的大小大 1+),我显然会在内联条件之前得到一个 IndexError list out of range分配变量:

In [145]: myList = [1,2]

In [146]: x = 'foo' if myList[2] is not None else 'bar'
---------------------------------------------------------------------------
IndexError Traceback (most recent call last)
<ipython-input-146-29708b8c471e> in <module>()
----> 1 x = 'foo' if myList[2] is not None else 'bar'

IndexError: list index out of range

事先检查列表的长度并不是一个真正的选择,因为我不知道我感兴趣的是哪个值丢失了(即 myList 可能会丢失三个可能的任何一个或全部值。知道它只包含一个、两个或三个元素没有帮助)。

更新:无法根据列表长度赋值的原因如下。该列表的最大大小为 3,顺序很重要。填充的值将是对 API 的三个单独调用的结果。如果对 API 的所有调用都成功,我会得到一个完整的列表,一切都很好。然而,如果只有两个返回一个值,则列表只包含两个项目,但我无法知道哪个 API 调用导致了丢失的项目,因此分配变量就是碰运气。

所以,长话短说:我如何检查某个索引处不存在的列表项,同时保持 Python 的单行条件?

最佳答案

只是测试是否有足够的元素:

x = 'foo' if len(myList) > 2 and myList[2] is not None else 'bar'

如果缺少前 2 个元素或者元素超过 3 个都没有关系。重要的是列表足够长,可以让第 3 个元素排在首位。

关于Python:如何在不获取 IndexError 的情况下检查不存在的列表元素的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30717080/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com