用“ if…”语句遍历两个列表

我有3个清单。

values_to_add = []
values_to_remove = []
values_to_keep = []

一次仅填充一个列表。如果填充了两个列表之一,我想执行以下操作:

if values_to_remove or values_to_keep:
    if values_to_remove:
        for value in values_to_remove:
            try:
                value_object.related_value.get(value=value)
            except exceptions.ObjectDoesNotExist:
                raise UnableToUpdate("These values are not related!")
    elif values_to_keep:
        for value in values_to_keep:
            try:
                value_object.related_value.get(value=value)
            except exceptions.ObjectDoesNotExist:
                raise UnableToUpdate("These values are not related!")        

但是,这段代码似乎很笨拙,我相信有一种更简洁的编写方式,因为它实际上是在重复代码。有什么建议么?

评论
少心怡
少心怡
if values_to_remove or values_to_keep:
    for value in (values_to_remove if len(values_to_remove) else values_to_keep):
        try:
            value_object.related_value.get(value=value)
        except exceptions.ObjectDoesNotExist:
            raise UnableToUpdate("These values are not related!")
点赞
评论