python - 使用 'if... or' 语句迭代两个列表

标签 python list loops if-statement try-except

我有 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!")

关于python - 使用 'if... or' 语句迭代两个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61853205/

相关文章:

python - seaborn 热图中的自定义调色板间隔

python : AttributeError: 'NoneType' object has no attribute 'append'

Python,从原始形式对我的列表进行排序

scala - 如何在 Scala 中对列表中的两个邻居求和

java - 如何使字符串数组递增?

python - 值错误 : Unable to configure handler 'file' : [Errno 13] Permission denied:

python - 我应该在 celery 中使用 prefork、eventlet 或 gevent 哪个池类?

JavaScript 循环和数组

java - 递归和循环哪个更有效?

python - 更改Python中的包导入名称