元组作为函数参数

时间:2018-07-20 03:19:52

标签: python python-3.x

我有一个试图将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

如何使度量标准函数接受这些参数? 感谢您的帮助。

1 个答案:

答案 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