if (zlist[i+1])==(zlist[i]):
TypeError: 'NoneType' object is not subscriptable


我在函数中执行此操作时收到此错误:

def plaintextmodOne(ylist):
    i = int(0)
    zlist = list(ylist)
    elementalcount = len(zlist)
    while i<elementalcount:
        if (zlist[i+1]) == (zlist[i]):
            if zlist[i] == 'X':
                zlist = zlist.insert(i+1, 'Q')
            else:
                zlist = zlist.insert(i+1, 'X')
        i += 2
    return(ylist)


如果我只是在while循环中执行了len(zlist)而不是elementalcount,我将得到:

TypeError: object of type 'NoneType' has no len()


我正在尝试比较左侧的元素是否相同,在这种情况下,如果它们都是X,则添加Q;如果不是X,则添加X。

它们被添加到重复值之前。当下一次迭代发生时,索引增加了2(按对计算),以查看下对是否相同。

最佳答案

zlist.insert适当地改变zlist,并且像大多数变异Python方法一样,不返回任何内容(None)。不要将zlist分配给insert调用的结果,因为这会在您第一次执行时丢弃对zlist的引用。只需调用insert而不分配(无意义的)结果即可。

08-20 01:34