gpt4 book ai didi

python - "' 生成器 ' object is not subscriptable"错误

转载 作者:IT老高 更新时间:2023-10-28 22:04:06 26 4
gpt4 key购买 nike

为什么我在尝试解决 Project Euler 问题 11 时从代码的第 5 行收到此错误?

for x in matrix:
p = 0
for y in x:
if p < 17:
currentProduct = int(y) * int(x[p + 1]) * int(x[p + 2]) * int(x[p + 3])
if currentProduct > highestProduct:
print(currentProduct)
highestProduct = currentProduct
else:
break
p += 1
'generator' object is not subscriptable

最佳答案

你的 x 值是一个生成器对象,它是一个 Iterator :它按顺序生成值,因为它们是由 for 循环或调用 next(x) 请求的。 .

您正试图访问它,就像它是一个列表或其他 Sequence类型,它允许您通过索引访问任意元素为 x[p + 1].

如果您想按索引从生成器的输出中查找值,您可能需要将其转换为列表:

x = list(x)

这可以解决您的问题,并且适用于大多数情况。但是,这需要一次生成并保存所有值,因此如果您要处理一个极长或无限的值列表,或者这些值非常大,它可能会失败。

如果您只需要生成器中的单个值,您可以改用 itertools.islice(x, p)丢弃第一个 p 值,然后 next(...) 获取您需要的值。这消除了在内存中保存多个项目或计算超出您正在查找的值的需要。

import itertools

result = next(itertools.islice(x, p))

关于python - "' 生成器 ' object is not subscriptable"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6288016/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com