我试着这样做:
x = []
def func():
for y in range(0,5):
x.append(y)
def func2():
for i in range(0, 5):
print x[i]
我收到错误:
IndexError:列表索引超出范围
如何放置全局x数组?并在func2中访问x数组的值。
答案 0 :(得分:4)
如果在致电func2
func
,您将收到该错误消息
>>> x=[]
>>> func2()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in func2
IndexError: list index out of range
>>> func()
>>> func2()
0
1
2
3
4
答案 1 :(得分:2)
列表索引超出范围是因为在调用func2()时列表中没有元素。
因为你在一系列范围内循环(0,5)用x = [0] * 5
初始化列表
x = []
def func():
for y in range(0,5):
x.append(y)
def func2():
for i in range(0, 5):
print x[i]
func()
func2()
如果调用func2()而不实际包含函数func()的元素,显然print x[i]
将引发Index Out of of Bound异常,因为列表为空。
答案 2 :(得分:2)
原始问题的解决方案如下所示:
x = []
def func():
y = 2
x.append(y)
def func2():
for i in range(0, 5):
print(x[i])
拨打func
5次,然后就可以了:
for n in range(5):
func()
func2()
输出:
2
2
2
2
2
您的列表x
仍然是空的。致电func
会追加2
。整个代码并没有真正有用,但它演示了它是如何工作的。
答案 3 :(得分:2)
如果您早于func()
宣布func2()
您应该在func()
之前致电func2()
,否则您将收到错误,因为您的数组仍为空。
所以这个:
x = []
def func():
for y in range(0,5):
x.append(y)
def func2():
for i in range(0, 5):
print x[i]
func()
func2()
务!
但是这个:
x = []
def func():
for y in range(0,5):
x.append(y)
def func2():
for i in range(0, 5):
print x[i]
func2()
func()
不要!