这是我想使代码更具可读性的一些代码。它可以工作,但是嵌套的for循环和try / if乍一看使它很难理解。
有人可以给我一些建议,让我知道如何加入嵌套的for循环或压缩此代码吗?
matcher = None
if re.match(_RE_OBJECT, nodes.replace(LQMN, '')):
matcher = alias
else:
for x in lister[0].conditions:
for y in x.codes:
try:
if y.id.split(',')[1] == condition:
matcher = x.codenames
except IndexError:
pass
您可以使用生成器表达式来嵌套循环并添加使IndexError
处理程序过时的过滤器:
candidates = ((x, y) for x in lister[0].conditions for y in x.codes if ',' in y.id)
for x, y in candidates:
if y.id.split(',')[1] == condition:
matcher = x.codenames
可读性会更多使用比其他更有意义的名称来改善x
和y
这里虽然:
candidates = ((cond, code) for cond in lister[0].conditions for code in cond.codes
if ',' in code.id)
for cond, code in candidates:
if code.id.split(',')[1] == condition:
matcher = cond.codenames
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句