我试图更好地理解一些代码,但有一行代码做了一堆我没有完全理解的事情。我想知道是否有办法将它分成多行,以便我可以更好地了解每个步骤中发生的事情。
这段代码是一个函数的一部分,是一段很长的代码(很多行),所以当这只是一行时,很难将整个代码粘贴到这里。但是,如有必要,我可以这样做或以某种方式附加代码。我特别提到的那行是一个函数,当给定一个部分赋值时,它返回完整的赋值。如下:
return min([(sum([int(self.get_weight(assign, var, action)>0) for action in self.domains[var]]), var) for var in self.my_function if var not in assign])[1]
这些调用了一堆以前编码的权重等。我只是问你如何将这个表达式分成多行。我的一些想法是:
for var in self.my_function:
if var not in assign:
for action in self.domains...
关于如何做到这一点有什么想法吗?我看到当我尝试这样的事情时抛出了一个错误,“unhashable type: list”,所以我知道它不是完全相同的表达式。谢谢!
请您参考如下方法:
首先将原始代码拆分成多行:
min([
(
sum([
int(self.get_weight(assign, var, action)>0) for action in self.domains[var]
]), var
) for var in self.my_function if var not in assign
])[1]
可以重写为:
list_to_take_min_of = []
for var in self.my_function:
if var not in assign:
weights = []
for action in self.domains[var]:
weights.append(int(self.get_weight(assign, var, action)>0))
list_to_take_min_of.append((sum(weights), var))
min(list_to_take_min_of)[1]
