遍历列表时的Python TypeError

0 python int iterable object typeerror

我正在教自己Python 3.2,我正在尝试创建一个匹配名单的程序.pList是一个多维列表,第0列为字符串,第1列为整数,第2列为布尔值.但是,每当我尝试调用此函数时(只有在列表中的行数为偶数时才会运行),我得到一个TypeError.

Traceback (most recent call last):
 File "C:\Users\METC\Dropbox\assassins.py", line 150, in <module>
main()
 File "C:\Users\METC\Dropbox\assassins.py", line 11, in main
update(ops, pList)
 File "C:\Users\METC\Dropbox\assassins.py", line 125, in update
b = match(pList)
 File "C:\Users\METC\Dropbox\assassins.py", line 47, in match
q, p = 0
TypeError: 'int' object is not iterable
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激,但请记住,我是一个语言的初学者,所以要温柔.:)我不介意你是否太技术了; 我有计算机科学的经验.

def match(pList):
    b = []
    z = len(pList)-1
    for x in range(z):
        b.append([pList[x][0],0])
    for x in range(z):
        isValid = False
        q, p = 0
        while isValid == False:
            q = random.randint(0, z)
            print('q is ' + str(q))
            if q > z:
                isValid = False
            elif q < 0:
                isValid = False
            elif pList[q][1] == True:
                isValid = False
            else:
                isValid = True
        isMatch = False
        while isMatch == False:
            if pList[q][1] == False:
                isValid = False
                while isValid == False:
                    p = random.randint(0,z)
                    print('p is ' + str(p))
                    if p > z:
                        isValid = False
                    elif p < 0:
                        isValid = False
                    elif pList[p][2] == True:
                        isValid = False
                    else:
                        if q == p:
                            isValid = False
                        else:
                            isValid = True
                print('match valid')
                b[q][1] = pList[p][0]
                isMatch = True
    print('')
    return b
Run Code Online (Sandbox Code Playgroud)

Kei*_*ith 5

这是你的构造:

q, p = 0
Run Code Online (Sandbox Code Playgroud)

它试图通过迭代来解压缩单个int.这不是有效的Python语法.我想错误可能更好.

使用:

q = p = 0
Run Code Online (Sandbox Code Playgroud)

代替.