loops - 使用循环与在 try/except 中获取特定索引

标签 loops python

对于我正在处理的一个项目,我正在处理许多深度嵌套的 dict-and-list 数据结构。我经常发现自己在进行查找,希望返回包含单个成员的列表。查找可能会彻底失败,或者只是返回零结果,因此我可以编写如下代码:

try:
    value_I_need = lookup_results[0]
except IndexError:
    # handle lookup failure, keep going

但最近我一直在想,如果最初假设它只发生零次或一次,那么编写一个循环是否更适合 future :

value_I_need = None
for value_I_need in lookup_results:
    break
if value_I_need is None:
    # handle lookup failure, keep going

(我说“面向 future ”是因为我可能想重写或概括此代码以处理其中包含多个结果的查找。)这两种方法中的任何一种是否存在固有的非 Pythonic、错误或速度较慢的问题?

最佳答案

The builtin function next()正是这样做的:

a = ()
b = [1, 2, 3]
print next(iter(a), "empty") # prints "empty", as a doesn't give any values.
print next(iter(b), "empty") # prints 1, the 1st value of b

关于loops - 使用循环与在 try/except 中获取特定索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825248/

相关文章:

c - 如何遍历数组中字符串的字符?

java - 两个列表之间的比较。是否可以获得列出的输出?

python - R 选取经济衰退期的开始日期和结束日期

python - 如何在Python中操作多维numpy数组

php - 循环遍历一个mysql字段

c++ - 如何重播我的主要功能? (阅读描述,很难写标题)

qt - QDialog 关闭时如何终止 QStateMachine?

java - for 循环如何工作,特别是 for(;;)?

python - opencv.imshow 会导致 jupyter notebook 崩溃

python - 使用 pandas 读取 .csv 文件时指定时间戳短语格式?