Nonetype对象不可订阅

时间:2015-10-29 04:22:47

标签: python python-3.x nonetype

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.

在重复值之前立即添加它们。当下一次迭代发生时,索引上升了两个(如同一对),看看下一对是否相同。

1 个答案:

答案 0 :(得分:1)

zlist.insert变异zlist,就像大多数变异的Python方法一样,不返回任何内容(None)。不要将zlist分配给insert调用的结果,因为这会在您第一次执行此操作时抛弃对zlist的引用。只需拨打insert而不指定(无意义的)结果。