有人可以向我解释为什么这个for循环不起作用。我试图在另一个程序中使用这样的东西来循环使用这个N作为参数的列表。
N = [20,40,60,80]
for j in N:
print(j)
for i in range(0,N[j]):
print(i)
提前致谢!
答案 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)