gpt4 book ai didi

python - 我应该如何处理这个IndexError

转载 作者:行者123 更新时间:2023-12-03 09:06:49 26 4
gpt4 key购买 nike

我正在尝试对此Bigram进行编码,但是已经给出了以下代码:

counts[given][char] += 1 
IndexError: list index out of range

我不知道该如何处理。谁能帮我?
def pairwise(s):
a,b = itertools.tee(s)
next(b)
return zip(a,b)
counts = [[0 for _ in range(52)] for _ in range(52)]

with open('path/to/open') as file:
for a,b in pairwise(char for line in file for word in line.split() for char in word):
given = ord(a) - ord('a')
char = ord(b) - ord('a')

counts[given][char] += 1

我收到此错误:
Traceback: counts[given][char] += 1 IndexError: list index out of range

最佳答案

您的counts变量是pairwise()函数中的局部变量。

这样,尝试在counts循环中以全局方式访问for将会引发NameError。但是,您改为使用一揽子except消除了该异常。不要那样做例如,参见Why is "except: pass" a bad programming practice?。如果您想忽略索引错误,请明确捕获该异常:

except IndexError:
print 'failed'

并让其他异常到达您,以便您更正错误。

取消缩进 counts行,这并不意味着它是 pairwise()函数的一部分:
def pairwise(s):
a,b = itertools.tee(s)
next(b)
return zip(a,b)

counts = [[0 for _ in range(52)] for _ in range(52)]

with open('path/to/open') as file:
for a,b in pairwise(char for line in file for word in line.split() for char in word):
given = ord(a) - ord('a')
char = ord(b) - ord('a')
try:
counts[given][char] += 1
except IndexError:
# unknown character, ignore this one

请注意,对于小写ASCII字母(a-z)以外的任何内容,您产生的索引要么太大要么为负数。 ord('a')是97,但是大写字母的范围是65到90。这意味着您最终会得到-32到-5的整数。那可能不是您想要的。

关于python - 我应该如何处理这个IndexError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27964992/

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