有关索引错误和划分的问题

时间:2019-03-17 15:02:01

标签: python python-3.x

我有两个列表,我想使用for循环创建生成商。具体来说,我想依次指定.5,.25和.125。当然,我可以只采用这些值并手动确定商,但是我是从一个开始学习Python的人的角度来看这个问题的。我已经阅读了一些其他有关for循环的文章,但看不到以下内容为什么会产生:索引错误:列表索引超出范围。因此,我不仅在寻找对该代码的修改,而且还在合理地解释为什么会出现这种错误。

x=[2,4,16]
y=[4,16,128]
for i in y:
    y[i]/x

3 个答案:

答案 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]