紧凑会降低可读性吗?

时间:2018-11-01 16:17:18

标签: python readability

您如何看待Python中的两个代码段?

for a in aa:
    if a in nb:
        intsct.append(a)
        nb.remove(a)

如果代码段被重写为以下内容,怎么办?

[intsct.append(a) or nb.remove(a) for a in aa if a in nb]

尽管它们两者都给了我相同的结果,但就Python的代码实践而言,哪一个更好?如果强调紧凑性,我可以再选第二个吗?

1 个答案:

答案 0 :(得分:3)

我不喜欢第二个,因为您实际上并没有使用这些结果:您纯粹是出于副作用的目的构建一个列表,然后将其丢弃(这效率也很低;请想象aa有十亿个项目)。这还取决于是否知道list.append返回None,以便or子句使list.remove始终被调用。

当您找到表达意图的表达方式时,紧凑性非常好。我认为这仅仅是为了简洁,而实际上并没有表达原始代码的目标。换句话说,如果您是我的同事,并且我想弄清楚为什么在凌晨2点中断了,我会骂您的名字。