如何优雅地链接

def*_*ode 4 python

我有一段奇怪的代码.这很臭,但如果更清楚,我想不出方法.

我要做的是从左侧列表的尾部或右侧列表的头部删除最大的项目.我最终得到了这段代码.

if not left:
  right.pop(0)
elif not right:
  left.pop(-1):
elif len(left[-1]) < len(right[0]):
  right.pop(0)
else:
  left.pop(-1)
Run Code Online (Sandbox Code Playgroud)

条件的主体是彼此完全相同的,yuck.

是否有一种优雅的方法来重构此代码以最大限度地减少重复?

Ign*_*ams 6

改变您的条件,并消除多余的条款.

if (not left) or (right and (len(left[-1]) < len(right[0]))):
  right.pop(0)
else:
  left.pop(-1)
Run Code Online (Sandbox Code Playgroud)

  • 这看起来比原始代码更难阅读,因为我必须停下来思考嵌套布尔逻辑意味着什么. (11认同)