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
而不分配(无意义的)结果即可。