这是我的功能代码:
import random
def generate(n):
res = [0]
x = [0]
while x == 0:
x[0] = random.randint(0, 9)
res = res[0].append(x[0])
for i in range(1, n - 1):
x[i] = random.randint(0, 9)
res[i] = res[i].append(x[i])
return res
主程序代码:
import number
n = 20
f = number.generate(n)
s = []
s = number.counter()
print("{0}" .format(s))
当我运行程序时,我得到:
Traceback (most recent call last):
f = number.generate(n)
x[i] = random.randint(0, 9)
IndexError: list assignment index out of range
你能告诉我如何解决这个问题吗?谢谢:))
答案 0 :(得分:3)
出现此错误的原因是您正在访问仅指定了x [0]的x [0到n]。该列表只有一个索引,您正在访问更高的索引。这就是为什么你的列表索引超出范围。
使用此功能生成随机数列表。
def generate(n):
return [random.randint(0,9) for i in range(n)]
答案 1 :(得分:2)
您初始化两个大小为1的列表。然后,当您尝试访问索引为1的元素时,会出现索引错误。
首先尝试:
import random
def generate(n):
x = [random.randint(1, 9)] + [random.randint(0, 9) for _ in range(n-1)]
return x
答案 2 :(得分:1)
使用append方法添加到列表中。
x.append(val-to-add-to-list)
for i in range(1, n - 1):
x.append (random.randint(0, 9))
res.append(x[i])
return res
答案 3 :(得分:1)
您的x是一个只有一个元素的列表,即0。
在此行中:x[i] = random.randint(0, 9)
您的第一个i
等于1
,因此您已超出范围。