gpt4 book ai didi

python - 如何在 Python 中划分 2 个列表时处理列表推导中被零除的异常

转载 作者:太空狗 更新时间:2023-10-29 23:58:28 27 4
gpt4 key购买 nike

如何在 Python 中划分 2 个列表时处理列表推导中被零除的异常:

从下面的例子:

from operator import truediv
result_list = map(truediv, [i for i in list1], [j for j in list2])

其中 list2 可以包含 0 作为值。

由于我的代码限制,我想在同一行中处理异常。请帮助我。

最佳答案

你不能try(compound) statement , 列表理解是一个 expression .在 Python 中,这些是完全不同的东西,您不能在表达式中包含语句。

你可以做的是使用包装函数:

def add_handler(handler, exc, func):
def wrapper(*args, **kwargs):

try:
return func(*args, **kwargs)
except exc:
return handler(*args, **kwargs) # ???
return wrapper

然后用作:

my_truediv = add_handler(print, ZeroDivisionError, truediv)

请注意,这非常有限。您必须返回一个值并将其插入到结果列表中,不能简单地“跳过它”。

你应该简单地做:

from operator import truediv
result_list = []
for i, j in zip(list1, list2):
try:
result_list.append(i/j)
except ZeroDivisionError:
pass

或者,如果您只是想跳过这些值,您可以将它们过滤掉:

map(lambda x_y: truediv(*x_y), filter(lambda x_y: x_y[1] != 0, zip(list1, list2)))

关于python - 如何在 Python 中划分 2 个列表时处理列表推导中被零除的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32308335/

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