Python方法重构

2024-04-27 00:22:35 发布

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

我一直在努力解决这个问题,所以我会感谢你的帮助!你知道吗

我的大学任务是写这个方法:

def removeRedundant(clauses, setOfSupport):

    newClauses = set()
    for clause in clauses:
        if not clause.isRedundant(clauses):
            newClauses.add(clause)

    newSOS = set()
    for clause in setOfSupport:
        if not clause.isRedundant(setOfSupport):
            newSOS.add(clause)

    return newClauses, newSOS

以不同的方式避免了这两个for循环。 我想知道是否有可能把这两个循环合并成一个循环,或者有其他的方法来代替它们?你知道吗

提前谢谢!你知道吗


Tags: 方法inaddforifnotclause大学
1条回答
网友
1楼 · 发布于 2024-04-27 00:22:35

不,您无法删除所有循环,但可以将两个循环合并为一个:

from itertools import izip_longest

def removeRedundant(clauses, setOfSupport):
    newClauses, newSOS = set(), set()

    for clause, support in izip_longest(clauses, setOfSupport, fillvalue=None):
        if (clause is not None) and (not clause.isRedundant(clauses)):
            newClauses.add(clause)
        if (support is not None) and (not support.isRedundant(setOfSupport)):
            newSOS.add(support)

    return newClauses, newSOS

相关问题 更多 >