循环中出现意外的起始索引

时间:2016-11-07 00:47:11

标签: python-2.7 for-loop indexing range

我正在尝试构造一个for循环,其中我将使用循环的索引作为列表中的元素。这是我的代码:

a

理想情况下,我希望a1 = [] a2 = [] for i in range(1, 91, 2): for j in range(1, i, 2): a1.append(float(i)) a2.append(float(j)) a1开头,但是当我打印其元素时,我会从3.0开始:

1.0

我在这里做错了什么?我真的很困惑。我想我会先[3.0, 5.0, 5.0, 7.0, 7.0, 7.0, 9.0, 9.0, 9.0, 9.0, 11.0, 11.0, 11.0...] 作为第一个元素,然后是1.0,这要归功于2的步骤,依此类推。

由于我无法找到任何有关此问题的答案,如果之前有人问过,我道歉。在此先感谢您的帮助。

编辑:感谢大家对正在发生的事情的意见!你们都非常乐于助人。 并感谢jojo纠正我的格式。

2 个答案:

答案 0 :(得分:1)

这是因为当i为1时,内部j循环永远不会发生。所以你要做的是在进入内部j循环之前将i追加到a1

    for i in range(1, 91, 2):
       a1.append(float(i))
       for j in range(1, i, 2):
           a2.append(float(j))

希望这有帮助!

答案 1 :(得分:0)

那是因为当i = 1内部j循环具有以下形式时:

for j in range(1, 1, 2):
   ...

因此,range函数返回空列表时不会运行迭代。

>>> range(1, 1, 2)
[]

因此,在外循环的第一次迭代中不执行追加