我有一个试图将2.7转换为3的旧代码,但我不知道如何传递一些元组参数。
代码如下:
def make_dis(self):
if self.ds == "SEP_EU":
def metric((x, y), (a, b)): # <- Error here (Invalid syntax)
return math.sqrt((x - a) ** 2 + (y - b) ** 2)
else:
def metric(a, b):
return 0
self.n_dist = [[metric(self.n_coord[i], self.n_coord[j]) for i in range(self.dim)] for j in range(self.dim)]
return self
如何使度量标准函数接受这些参数? 感谢您的帮助。
答案 0 :(得分:4)
您无法在函数参数中“定义”元组,但之后可以对其进行扩展:
def metric(t1, t2): # Where t1 and t2 are two tuples
(x, y), (a, b) = t1, t2
return math.sqrt((x - a) ** 2 + (y - b) ** 2)
此外,通过变量分配中的“元组”扩展,您实际上可以扩展任何Iterable
(不限于tuple
)。因此,如果您通过两个list
,则您的函数仍将起作用:
metric([1, 2], [4, 6]) # => 5.0