from collections import deque
def muladd(f1,f2_inv):
global ans
for j in f1:
ans = f1[j]*f2_inv[j]
f1 = [2,3,7,5,4,0,0,0,0,0,0,0,0]
f2 = [0,0,0,0,8,7,6,5,9,0,0,0,0]
conv = [0,0,0,0,0,0,0,0,0]
f2_inv = f2.reverse()
for i in conv:
conv[i]= muladd(f1,f2_inv)
print conv[i]
f1.rotate(1)
我无法运行代码。
当我运行此代码时,我收到错误:
'NoneType' object has no attribute '__getitem__'
答案 0 :(得分:2)
reverse()
不会返回任何内容,而是就地修改列表。所以f2
是无。您应该使用独立的reversed()
功能。
f2_inv = list(reversed(f1))
或切片:
f2_inv = f1[::-1]
(注意,此代码还存在其他问题,例如,i
在循环中始终为0,因为您只迭代0的列表。)
答案 1 :(得分:0)
在你的循环中
for i in conv:
conv[i]= muladd(f1,f2_inv)
print conv[i]
f1.rotate(1)
i
将是一个对象(它遍历conv
的所有对象,因此i
是一个对象而不是索引号)。这样您就无法使用conv[i]
。要使用i
作为索引,请使用:
for i in range(len(conv)):
conv[i]= muladd(f1,f2_inv)
print conv[i]
f1.rotate(1)
(这不是导致错误的原因,但如果您的错误被解决,则会导致问题,因为conv[i]
始终为conv[0]
,因为i
为0
而是当前索引号)