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.
在重复值之前立即添加它们。当下一次迭代发生时,索引上升了两个(如同一对),看看下一对是否相同。
答案 0 :(得分:1)
zlist.insert
变异zlist
,就像大多数变异的Python方法一样,不返回任何内容(None
)。不要将zlist
分配给insert
调用的结果,因为这会在您第一次执行此操作时抛弃对zlist
的引用。只需拨打insert
而不指定(无意义的)结果。