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

2024-04-19 10:18:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了一些Python v2.7代码,我将其重构为:

for ssid in (ssid for ssid in overlaps
             if ssid != subseq_id and ssid not in merged):

但我觉得应该有一种不用两个for语句就能表达的方法?你知道吗


Tags: and方法代码inidforifnot
2条回答

根据您的数据(顺序不重要,…),您可以使用集合:

excluded = set(merged)
excluded.add(subseq_id)
ssids = set(overlaps) - excluded
for ssid in ssids:
    ...

您可以使用filter()

for ssid in filter(lambda s: s != subseq_id and s not in merged, overlaps):
    # ...

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

for ssid in overlaps:
    if ssid == subseq_id or ssid in merged:
      continue
    # ...

相关问题 更多 >