2024-04-29 02:04:12 发布
网友
所以我有一段简单的代码:
class Player: def __init__(self): self.score = 0 players = [Player() for _ in range(10)]
现在我想:
from itertools import cycle loop = cycle(players) loop = filter(lambda player: player.score >= 0, loop)
我有一个问题,这些条件,我不知道如何咬他们
这里有一个主要使用itertools的解决方案
itertools
import itertools positive_players = lambda : filter(lambda player: player.score >= 0, players) loop = itertools.cycle(positive_players()) if len(list(positive_players())) <= 1: loop = positive_players() if len(set([p.score for p in positive_players()])) <= 1: loop = positive_players()
一些测试:
这里有一个替代解决方案,使用生成器
def loop_players(players): inx = 0 positive_count = 0 positive_scores = set() while True: p = players[inx] inx += 1 if p.score < 0: continue positive_count += 1 positive_scores.add(p.score) yield p if inx == len(players): inx = 0 if positive_count < 2: break if len(positive_scores) < 2: break
解决方案1
这里有一个主要使用
itertools
的解决方案一些测试:
解决方案2
这里有一个替代解决方案,使用生成器
相关问题 更多 >
编程相关推荐