python - 将条件表达式用于副作用是否有效?

标签 python python-3.x

我想找出最好的方法是什么:

resource['contents'][media_type] = []
resource['contents'][media_type].append(row[0].toPython()) if row[0] is not None else None
resource['contents'][media_type].append(row[2].toPython()) if row[2] is not None else None

我认为代码很简单;如果行有值,则将它们添加到列表中。这种方法可以吗?还有其他更好的方法吗? toPython 方法将返回包含对象的字符串描述。

最佳答案

使用“三元”conditional expression (x if C else y) 对于副作用根本不是 Pythonic。以下是我的做法:

resource['contents'][media_type] = []
for index in (0, 2):
    item = row[i]
    if item is not None:
        resource['contents'][media_type].append(item.toPython())

或使用列表理解来减少冗长:

resource['contents'][media_type] = [row[i].toPython() for i in (0, 2) 
                                    if row[i] is not None]

这些方法更具可读性,并且减少了重复。

关于python - 将条件表达式用于副作用是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32454225/

相关文章:

python - 如何在使用 train_and_evaluate 时访问 BestExporter 的结果?

python - openerp服务器设置过程出错

python - 值错误: Unknown label type: 'continuous' while using Logistical Regression

python - 在 python 中运行 exe 文件 - 不起作用

python - 使用 block 切割 DNA 序列

python - pickling python 对象到谷歌云存储

python - 查找两点之间字符串的最佳方法

python - 多处理超时?

python-3.x - 我需要导入 src 库。我已经使用 pip install src 。但经常出现错误

python - 如何过滤 jinja2 模板中的集合?