将取模应用于python列表的所有元素,并获得一些正确的一些不正确的元素

wil*_*v24 3 python loops list

我正在实现一个减少列表模3的所有元素的函数。这就是我所拥有的:

def reduceMod3(l):
    for i in l:
        l[i] = l[i] % 3
    return l
Run Code Online (Sandbox Code Playgroud)

当我在L = [1,2,3,4,5,6,7,8,9]上调用此函数时,我得到:

L = [1, 2, 0, 4, 2, 6, 1, 8, 0]
Run Code Online (Sandbox Code Playgroud)

为什么是这样?我想弄清楚,但我很着急。谢谢。

Eri*_*ard 5

在编写时for i in l,您正在访问列表的每个元素,而不是索引。相反,您应该写

for i in range(len(l)):
Run Code Online (Sandbox Code Playgroud)

您还可以通过列表理解来解决此问题:

return [item % 3 for item in l]
Run Code Online (Sandbox Code Playgroud)