我有两个列表,我想使用for循环创建生成商。具体来说,我想依次指定.5,.25和.125。当然,我可以只采用这些值并手动确定商,但是我是从一个开始学习Python的人的角度来看这个问题的。我已经阅读了一些其他有关for循环的文章,但看不到以下内容为什么会产生:索引错误:列表索引超出范围。因此,我不仅在寻找对该代码的修改,而且还在合理地解释为什么会出现这种错误。
x=[2,4,16]
y=[4,16,128]
for i in y:
y[i]/x
答案 0 :(得分:1)
看看以下内容:
x=[2,4,16]
y=[4,16,128]
for i in y:
print(f"i: {i}")
print(f"y: {y}")
这是输出:
i: 4
y: [4, 16, 128]
i: 16
y: [4, 16, 128]
i: 128
y: [4, 16, 128]
您在第一个循环中正在寻找y[4]
,但它不存在。如果要遍历列表,可以执行以下操作:
x=[2,4,16]
y=[4,16,128]
for i in range(len(y)):
print(f"i: {i}")
print(y[i])
输出:
i: 0
4
i: 1
16
i: 2
128
答案 1 :(得分:1)
我相信您需要的是zip
两个列表,然后对给定的迭代值应用除法:
x=[2,4,16]
y=[4,16,128]
for xi, yi in zip(x, y):
print(xi/yi)
结果是:
0.5 0.25 0.125
为了了解zip
在做什么:
https://docs.python.org/3.3/library/functions.html#zip
答案 2 :(得分:0)
您没有遍历索引,而是遍历了值
for i in y:
y/x[?]
如果要遍历索引,可以使用枚举来完成
for index, value in enumerate(y):
y[index]/x[index]