gpt4 book ai didi

Python "not in"索引超出范围错误

转载 作者:行者123 更新时间:2023-11-28 16:28:33 27 4
gpt4 key购买 nike

我正在处理某种问题,但找不到任何解决方案。我的问题是我在嵌套列表中控制一个值,如果它不在另一个列表中,如果它不存在但在不在行中,它会给我一个错误,如索引超出范围。

def heroes_updater(men_pref,women):
for i in range(0,len(men_pref)-1):
for j in range(0,len(men_pref[i])-1):
if men_pref[i][j] not in women:
men_pref[i]=men_pref[i][:j]+men_pref[i][j+1:]

示例 men_pref:

[['Storm', 'Black Widow', 'Scarlet Witch', 'Rouge', 'Mystique', 'Jean Grey', 'Ms. Marvel', 'Gamora', 'Invisible Woman', 'Elektra'], ['Storm', 'Elektra', 'Jean Grey', 'Scarlet Witch', 'Mystique', 'Ms. Marvel', 'Gamora', 'Rouge', 'Black Widow', 'Invisible Woman'], ['Invisible Woman', 'Scarlet Witch', 'Mystique', 'Black Widow', 'Ms. Marvel', 'Elektra', 'Jean Grey', 'Gamora', 'Storm', 'Rouge']]

示例女性:

['Jean Grey', 'Elektra', 'Mystique', 'Ms. Marvel', 'Rouge']

错误是:

if men_pref[i][j] not in women:

IndexError: list index out of range

最佳答案

通过从列表中删除元素,列表变短 j 大于列表的长度。要避免这个问题,只需不要更改列表,而是创建一个新列表:

def heroes_updater(men_pref,women):
result = []
for prefs in men_pref:
new_prefs = []
for pref in prefs:
if pref in women:
new_prefs.append(pref)
result.append(new_prefs)
men_pref[:] = result

或更好:

def filter_non_heroes(men_pref,women):
return [
[pref for pref in prefs if pref in women]
for prefs in men_pref
]

关于Python "not in"索引超出范围错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34441624/

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