You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不使用额外函数的列表推导式中抛出异常?

一行代码实现列表元素类型校验并抛异常

你之前的代码无法运行,核心原因是列表推导式的表达式位置只能容纳有返回值的表达式,而raise是仅执行逻辑的语句,不能直接放在这里。

要实现不依赖额外自定义函数的一行代码方案,可以利用all()函数结合生成器表达式,搭配exec()来执行raise语句:

all(isinstance(x, int) or exec("raise Exception('Incorrect Data Type Present')") for x in my_list)

原理说明:

  • all()会遍历生成器中的每个元素,只要有一个元素让表达式返回False,就会停止遍历;
  • 当元素不是整数时,isinstance(x, int)为False,会执行exec()里的raise语句,直接抛出异常;
  • 当所有元素都是整数时,all()返回True,不会触发异常。

也可以用any()检测是否存在非整数元素,存在则抛异常,写法更直观:

any(not isinstance(x, int) and exec("raise Exception('Incorrect Data Type Present')") for x in my_list)

这两种写法都不需要额外定义函数,完全在一行代码内完成需求。

内容的提问来源于stack exchange,提问作者Dremloogic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:35:25