1

I've come across some Python v2.7 code that I have refactored to become this:

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

But it feels to me that there should be a way to express this without using two for statements?

4

2 に答える 2

14

使用できます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
    # ...
于 2013-02-28T21:51:16.387 に答える
0

データに応じて(順序は重要ではありません...)、setsを使用できます:

excluded = set(merged)
excluded.add(subseq_id)
ssids = set(overlaps) - excluded
for ssid in ssids:
    ...
于 2013-02-28T22:12:34.797 に答える