【发布时间】:2021-11-09 14:39:41
【问题描述】:
我正在尝试在 for 循环中为给定列表(此处为 3、4、1)中的所有项目运行方程式。想法是使用列表 a 中的数字和范围中的数字(列表的索引号)。
所以第一个没问题,3 * 3^2 + 3 + 5 = 35。这应该遍历列表中的所有项目并返回 [[35, 57, 9]] 但给出 [[35, 4 , 1]] 代替。我知道它不会运行所有三个项目,但是我缺少的是什么。
def calculate_f(a):
i=0
lis = []
for x in range(0, len(a)):
a[i] = 3 * (a[i]**2) + a[i] + 5
lis.append(a)
i += 1
return lis
a = [3,4,1]
calculate_f(a)
已经这样做了三个小时,并得到了不同的错误消息,但这几乎可以工作:D
谢谢
【问题讨论】:
-
edit 并修复您的 IndentationErrors - 然后 pythontutor.com - 逐步检查。
-
顺便说一句。您一遍又一遍地添加相同的列表引用,因此所有引用都将指向相同的数据。您可能想查找如何复制()或克隆()列表。
-
对不起,编辑在复制粘贴时把缩进搞砸了。
-
在您的 for 循环中,您正在执行
for x in range(0, len(a)),但忽略了x,而是手动维护您自己的索引计数器i。您可以只使用a[x],或者更简单地使用for x in a:直接遍历列表中的项目。但有关更多解决方案,请参阅我的答案。
标签: python list for-loop indexing