我正在实现一个减少列表模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)
为什么是这样?我想弄清楚,但我很着急。谢谢。
在编写时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)