“NoneType”对象没有属性“\uu getitem\u4”

2024-10-02 20:36:26 发布

您现在位置:Python中文网/ 问答频道 /正文

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__'

Tags: 代码infromimportfordefglobalcollections
2条回答

reverse()与许多对列表进行操作的方法一样,不返回任何内容,而是就地修改列表。所以f2没有。您应该使用独立的reversed()函数。你知道吗

f2_inv = list(reversed(f1))

或切片:

f2_inv = f1[::-1]

(请注意,此代码还有其他问题,例如循环中i始终为0,因为您只遍历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],因为i0而不是当前的索引号)

相关问题 更多 >