Python NameError:未定义全局名称“对”

Python NameError:未定义全局名称“对”,python,Python,pair是否有内置python模块,我找不到,如果没有,如何解决以下错误 def main (v1): #def find_busy_intervals(v1): if v1 == None or len(v1) == 0 : return None v2 = [] v2.append(pair(v1[0].first,v1[0].second)) for i in xrange(1, len(v1)): x1 = v1[i].first y1 =

pair是否有内置python模块,我找不到,如果没有,如何解决以下错误

def main (v1):
#def find_busy_intervals(v1):

  if v1 == None or len(v1) == 0 :
    return None

  v2 = []
  v2.append(pair(v1[0].first,v1[0].second))

  for i in xrange(1, len(v1)):
    x1 = v1[i].first
    y1 = v1[i].second
    x2 = v2[len(v2) - 1].first
    y2 = v2[len(v2) - 1].second

    if y2 >= x1:
      v2[len(v2)-1].second = max(y1, y2)
    else:
      v2.append(pair(x1,y1))

  return v2;

if __name__=="__main__":
    v1= [(1,5),(3,7),(4,6),(6,8),(10,12),(11,15)]
    v2 = main (v1)
    print v2
错误:-

C:\Dropbox\scripts>python pythonCSharp.py
Traceback (most recent call last):
  File "pythonCSharp.py", line 26, in <module>
    v2 = main (v1)
  File "pythonCSharp.py", line 9, in main
    v2.append(pair(v1[0].first,v1[0].second))
NameError: global name 'pair' is not defined

对于如此简单的东西,不需要有一个模块。您所需的pair类可以使用以下工具轻松构建:

现在,您可以在该代码中使用pair-like,但请注意,v1的元素也必须是pair:

v1 = [pair(1,5), pair(3,7), pair(4,6), pair(6,8), pair(10,12), pair(11,15)]
。。。你不能分配给他们,就像在

v2[len(v2)-1].second = max(y1, y2)
因此,也许您应该使用一个自定义类:

class pair:
    def __init__(self, first, second):
        self.first = first
        self.second = second

虽然最简单的方法是放弃这对元组,使用普通元组,但您需要重新考虑算法,这样您就不需要与赋值v2[lenv2-1]等价的赋值。second=maxy1,y2,因为元组/命名元组不能变异。

什么是对?你是说元组吗?…你认为它会做什么?在本例中,您可以通过不引用不存在的对象来解决名称错误。pair应该做什么?如果它只是一个两元素元组,您可以简单地删除它,这样只剩下括号。pair函数是missing@mahdibahri与其说是失踪,不如说是根本不存在。
class pair:
    def __init__(self, first, second):
        self.first = first
        self.second = second