python - 列表理解失败,但为什么呢?

标签 python

谁可以向我解释为什么这个列表理解失败:

provider1 = {'id': 1, 'name': 'Een'}
provider2 = {'id': 2, 'name': 'Twee'}
provider3 = {'id': 3, 'name': 'Drie'}
provider4 = {'id': 4, 'name': 'Vier'}
provider5 = {'id': 5, 'name': 'Vijf'}
provider6 = {'id': 6, 'name': 'Zes'}
provider7 = {'id': 7, 'name': 'Zeven'}

providers = [provider1, provider2, provider3, provider4, provider5, provider6, provider7]


def testfunc(id):
    return next(provider for provider in providers if int(provider['id']) == int(id))


for x in range(0, 8):
    print testfunc(x)

当我运行它并将 0 传递给函数时,输出为:

Traceback (most recent call last):
  File "/Users/me/Documents/scratchpad/main.py", line 17, in <module>
    print testfunc(x)
  File "/Users/me/Documents/scratchpad/main.py", line 13, in testfunc
    return next(provider for provider in providers if int(provider['id']) == int(id))
StopIteration

Process finished with exit code 1

它确实适用于非零整数。

最佳答案

那是因为 next 函数在没有下一个项目时引发 StopIteration。特别是当底层迭代器为空时会发生这种情况,这就是 id == 0 的情况。

关于python - 列表理解失败,但为什么呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37608375/

相关文章:

python - 删除列表列表中的共享引用?

python - Matplotlib + Pylab 导入错误

python - 重新索引错误 - python

python - Linspace 未在 python (jupyter) 上定义

python - 使用 xhtml2pdf 将 unicode 模板转换为 pdf 时出现问题

python - 使用类方法而不是同名的实例方法

python - 在 Python 中打印可被素数整除的数字

python - Trello - 同时更新卡片位置和颜色

python - Splinter:按风格查找

python - 如何在python中删除一定数量的单词后的字符串