我正在尝试通过列表理解将一个用整数填充的列表的所有元素除以另一个整数(功能类似于 numpy 数组),如下所示:
results = 300 * [0]
for i in range(100):
for j in range(300):
results[j] += random.randrange(0,300)
average_results = [results[x] / 100 for x in results]
但是,如果我在 Python 中运行它,它会抛出一个
IndexError: list index out of range
我已经通过使用常规的 for 循环解决了这个问题:
average_results = []
for x in results:
average_results.append(x/100)
这就像一个魅力。
但是,在我看来,这两种方法应该产生相同的结果,所以我完全不明白为什么它不起作用。
有人能指出我正确的方向吗?
最佳答案
问题在于:
[results[x] / 100 for x in results]
在这里,您将迭代结果列表中的值(for x in results
)。然后他们每个人都试图访问具有该索引的元素。
你的意思是:
[x / 100 for x in results]
换句话说 - 列表理解的“for ... in ...”部分适用于列表中的值,而不是它们的索引。
顺便说一句,您的[x/100 for x in results]
不会为您提供所有值的平均值。它会“只”取其中的每一个并除以 100。
关于python - 使用列表理解 : index out of range 将列表的元素除以整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47828209/