您如何看待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的代码实践而言,哪一个更好?如果强调紧凑性,我可以再选第二个吗?
答案 0 :(得分:3)
我不喜欢第二个,因为您实际上并没有使用这些结果:您纯粹是出于副作用的目的构建一个列表,然后将其丢弃(这效率也很低;请想象aa
有十亿个项目)。这还取决于是否知道list.append
返回None
,以便or
子句使list.remove
始终被调用。
当您找到表达意图的表达方式时,紧凑性非常好。我认为这仅仅是为了简洁,而实际上并没有表达原始代码的目标。换句话说,如果您是我的同事,并且我想弄清楚为什么在凌晨2点中断了,我会骂您的名字。