【发布时间】:2016-02-16 03:42:15
【问题描述】:
我有一个脚本,用于跟踪篮球比赛中每支球队的阵容,最终目标是按阵容(针对与对手的每个不同阵容)跟踪正负值。所以当我遍历数据框时,我有一个跟踪对手阵容的列表(opp_lineup)和一个子输出列表(opp_subouts)。代码如下:
if opp_subouts:
for opp_player in opp_subouts:
opp_lineup.remove(opp_player)
opp_subouts = []
我在这个脚本上取得了成功,直到我完成了某个播放。它给了我列表中最后一项的错误(并且现在在其他播放中),说它在 opp_lineup 中不存在。
我首先将这段代码放入 for 循环中进行故障排除:
print(opp_player)
print(opp_lineup)
print(opp_player == opp_lineup[-1])
这是输出:
#31 NIANGANE
['#04 MCBRIDE', '#11 EFIANAYI', '#20 NELSON', '#21 AHOLODE', '#24 IVEY', '#31 NIANGANE']
True
因此,尽管两个字符串相等,但 list.remove(x) 将不起作用并引发错误。这是怎么回事?
【问题讨论】:
-
抛出了什么错误?
-
ValueError: list.remove(x): x not in list
-
你确定 opp_player 是一个字符串吗?也尝试打印
type(opp_player) -
是的,它返回
。它实际上在此之前删除了列表中的玩家,但它似乎始终在列表中的最后一项上抛出错误。 -
你会在循环中删除它两次吗?