python - 使用列表理解 : index out of range 将列表的元素除以整数

标签 python list list-comprehension index-error

我正在尝试通过列表理解将一个用整数填充的列表的所有元素除以另一个整数(功能类似于 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/

相关文章:

python - Django 查询集 : Exclude all row(s) if any one row with same id is excluded

LINQ 查询输出键计数值对

python - 自动将 for 循环列表理解中列表中的所有元素发送到函数中

python - 列表理解以查找 1 到 1000 之间的所有数字,其中包含 7

python - 形状统计

python - 迭代数据框中的行以查找索引、jupyter 中列中的值并在 csv 文件中打印报告

javascript - Selenium WebDriver Python重新加载html而不刷新页面

javascript - 检查输入是否与 ul 中的值重复

android - 如何在 react-native 中使用列表项制作搜索过滤器

haskell - 为什么这个列表理解失败?