good = []

for m, n in ms:

if m.distance < 0.75 * n.distance:

good.append(m)

关键是“m, n”的实际用法和意义。

问题来源于知乎: Python语言两个变量的for循环语句如何解释? – 知乎 (zhihu.com)

解决方法:

在上面的代码片段中,ms 是一个可迭代对象(通常是一个包含元组或列表的序列),每个元素都包含两个值,分别赋给了变量 mn。这种情况下,mn 是用于迭代 ms 中元素的两个变量,分别表示每个元素中的第一个值和第二个值。

具体来说,这段代码的作用是遍历 ms 中的每个元素,然后检查 m.distance 是否小于 0.75 * n.distance。如果满足这个条件,就将 m 添加到名为 good 的列表中。这段代码可能用于某种图像处理或特征匹配的应用中,其中 ms 包含了一些相关的特征点或数据,而只有满足一定条件的特征点才会被添加到 good 列表中。

当在Python中使用for循环遍历一个包含元组的可迭代对象时,每个元组中的元素会被分配给for循环中的变量。在你提供的代码片段中,ms 是一个包含元组的可迭代对象,而mnfor循环中的变量,用于分别接收每个元组中的第一个值和第二个值。以下是一个示例:

假设你有一个包含多个元组的列表ms,每个元组表示两个点的距离信息,如下所示:

ms = [(10, 20), (15, 30), (5, 10), (8, 12)]

然后,你使用你提供的代码来遍历这个列表,并检查每个元组中的第一个值(用m表示)是否小于0.75倍第二个值(用n表示)的大小。如果满足条件,就将第一个值m添加到good列表中:

good = []

for m, n in ms:
    if m < 0.75 * n:
        good.append(m)

在这个例子中,循环会依次处理每个元组,例如:

  1. 第一次迭代,m等于10,n等于20,条件不满足,所以不会将10添加到good中。
  2. 第二次迭代,m等于15,n等于30,条件不满足,所以不会将15添加到good中。
  3. 第三次迭代,m等于5,n等于10,条件满足,所以将5添加到good中。
  4. 第四次迭代,m等于8,n等于12,条件满足,所以将8添加到good中。

最终,good列表将包含满足条件的值,即 [5, 8]。这些值是根据mn的比较来筛选出的。这个示例说明了mn如何在for循环中用于迭代元组中的值并执行条件检查。