可以更简洁地表达这个Python循环吗?

Wil*_*mKF 1 python refactoring for-loop python-2.7

我遇到了一些Python v2.7代码,我已经重构成为这个代码:

for ssid in (ssid for ssid in overlaps
             if ssid != subseq_id and ssid not in merged):
Run Code Online (Sandbox Code Playgroud)

但我觉得应该有一种方法来表达这个而不使用两个for陈述?

Mar*_*ers 14

你可以使用filter():

for ssid in filter(lambda s: s != subseq_id and s not in merged, overlaps):
    # ...
Run Code Online (Sandbox Code Playgroud)

或者你可以在循环中测试:

for ssid in overlaps:
    if ssid == subseq_id or ssid in merged:
      continue
    # ...
Run Code Online (Sandbox Code Playgroud)