【问题标题】:Python not removing item from list when it's in listPython在列表中时不会从列表中删除项目
【发布时间】: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)
  • 是的,它返回 。它实际上在此之前删除了列表中的玩家,但它似乎始终在列表中的最后一项上抛出错误。
  • 你会在循环中删除它两次吗?

标签: python list pandas


【解决方案1】:

您是否在 for 循环所迭代的同一范围内打印 opp_lineup?在尝试从中删除某些内容之前,您是否在任何地方重新定义 opp_lineup?您似乎正在尝试删除正确的 str,但您正在尝试从错误的对象中删除它。

【讨论】:

  • 我在尝试删除它之前直接打印它。也就是说,我发现了错误
【解决方案2】:

有两个问题:1) 源数据中的错误和 2) 正则表达式中的错误,我更改并忘记了代码中前面删除的后缀。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    相关资源
    最近更新 更多