Python方法重构
我一直在努力解决这个问题,所以我会感谢你的帮助 我大学的任务是写这个方法:Python方法重构,python,python-2.7,Python,Python 2.7,我一直在努力解决这个问题,所以我会感谢你的帮助 我大学的任务是写这个方法: def removeRedundant(clauses, setOfSupport): newClauses = set() for clause in clauses: if not clause.isRedundant(clauses): newClauses.add(clause) newSOS = set() for clause in
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循环。
我想知道是否有可能将这两个循环合并成一个循环,或者甚至有其他方法来替换它们
提前谢谢你 不,您无法删除所有循环,但可以将两个循环合并为一个:
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
@Vallentin什么?不。几乎可以肯定的是,作业希望您对代码进行折射,以便在
子句
和支持集
上并行执行单次传递,因此很可能类似于itertools。izip_longest
子句和支持集
的长度相同吗?如果是,则任务相对容易完成。isRedundant
做了什么?改进工作代码在我们的范围之内。在这里,它通常是不可重用的。