在简单的python for循环上列出索引超出范围错误

时间:2017-12-06 02:42:32

标签: python list for-loop

有人可以向我解释为什么这个for循环不起作用。我试图在另一个程序中使用这样的东西来循环使用这个N作为参数的列表。

    N = [20,40,60,80]

    for j in N:
        print(j)
        for i in range(0,N[j]):
            print(i)

提前致谢!

3 个答案:

答案 0 :(得分:2)

你超出范围,因为j取的是N数组元素的值,而不是索引。因此,j不是0,1,2,3而是20,40,60,80。 所以,当你到达for i in range((0, N[j])时,你要求N [20],这远远超出了N列表的长度。

你可以这样做:

N = [20,40,60,80]

for j in range(len(N)):
#        ^^^^^^^^^^^^^
    print(j)
    for i in range(0,N[j]):
        print(i)

答案 1 :(得分:0)

尝试:

for i in range(0,j):

而不是:

for i in range(0,N[j]):

由于N[j]将访问列表中的最新内容,例如N[80],但不存在。这就是您收到IndexError: list index out of range错误的原因。

要解决此问题,您需要在外部循环上应用range()

for i in range(len(N)):
    print(i)
    for j in range(0, N[i]):
        print(j)

在内部循环中将i应用于N时,仅查看range()的索引N = [20,40,60,80] for i in range(len(N)): print(i, "->", N[i]) ,而不是更大的实际元素。

如果您想要在列表中查找与索引有关的内容,请尝试以下操作:

0 -> 20
1 -> 40
2 -> 60
3 -> 80

哪个输出:

for number in N:
    print(number)

如果您只想要数字:

for index, number in enumerate(N):
    print(index, "->", number)

如果你想要一个更加pythonic方式的索引和数字:

0 -> 20
1 -> 40
2 -> 60
3 -> 80

哪个输出:

// !! Assumes variable fileURL contains a valid URL to a path on the device,
//    for example, cdvfile://localhost/persistent/path/to/downloads/

var fileTransfer = new FileTransfer();
var uri = encodeURI("http://some.server.com/download.php");

fileTransfer.download(
    uri,
    fileURL,
    function(entry) {
        console.log("download complete: " + entry.toURL());
    },
    function(error) {
        console.log("download error source " + error.source);
        console.log("download error target " + error.target);
        console.log("download error code" + error.code);
    },
    false,
    {
        headers: {
            "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
        }
    }
);

答案 2 :(得分:0)

你可以使用枚举

N = [20,40,60,80]
for index, j in enumerate(N):
    print(j)
    for i in range(0,N[index]):
        print(i)