ValueError: list.remove(x): x 不在列表中(但有)

Posted

技术标签:

【中文标题】ValueError: list.remove(x): x 不在列表中(但有)【英文标题】:ValueError: list.remove(x): x not in list(but there is) 【发布时间】:2018-07-05 00:04:05 【问题描述】:

我想要一种在随机选择元素后从列表中删除元素的方法,以免再次被选中。 当我尝试运行此代码时:

import random
list1 = ['afgdddd', 'bcbvnbn', 'casretb', 'dbcbv ', 'egfhsgs']
list2 = ['a5y5546', 'brtewtwret', 'chrtyey', 'dqawtet', 'egreg']
choice1 = random.randint(0, len(list1) - 1)
x=(list2[choice1])
list1.remove(choice1)
list2.remove(x)
print(x)
print(list1[choice1])
print(list2[choice1])

然后我得到这个错误: ValueError: list.remove(x): x not in list

【问题讨论】:

如果您发布了完整的回溯,您会看到错误发生在list1.remove(choice1) 行上。事实上,这个数字不在list1 中。不幸的是,您将变量命名为 x - 与错误消息使用的变量相同。 我知道,但我想知道如何解决这个错误。 好吧,那么您应该已经描述了您尝试使用list1.remove[choice] 实现的目标。我在这里假设:***.com/q/627435/8881141 对不起,我编辑了它 大家不要再给我发其他帖子了!!!在我问之前我已经阅读了它们。 【参考方案1】:
list1 = ['afgdddd', 'bcbvnbn', 'casretb', 'dbcbv ', 'egfhsgs']
list2 = ['a5y5546', 'brtewtwret', 'chrtyey', 'dqawtet', 'egreg']
choice1 = random.randint(0, len(list1) - 1)

list2 中的元素不在 list1 中。 您生成随机数并从 list2 中获取元素,并尝试从 list1 中删除。错误是正确的,list2中的item不在list1中

您可以做的是打印出x,并且仅当它存在于 list1 中时才将其删除

if x in list1:
    list1.remove(x)

注意,list.remove(param)这里的参数是索引值以外的特定索引处的项目

【讨论】:

老兄,当我尝试从列表 1 中删除某些内容时,错误即将到来。 @newhere 我知道你可以从 list2 中删除项目 xchoice1 是项目以外的索引,python list remove() 将项目作为项目索引以外的参数 是的,但它的项目不同。两个列表中的项目目的不同。目的是从第一个列表中选择一个随机项目,然后从第二个列表中选择与第一个列表位置相同的项目。然后我希望将这两项从列表中删除,以免再次被选中。

以上是关于ValueError: list.remove(x): x 不在列表中(但有)的主要内容,如果未能解决你的问题,请参考以下文章

获取ValueError:list.remove(x):x尝试从列表中删除值时不在列表中

错误:list.remove(x):x 不在列表中,我不明白为啥

pymssql.connect 错误 list.remove(x): x 不在列表中

谈谈Python中pop与remove的用法

list.remove(x) 删除超过此列表中的对象[重复]

List遍历时删除遇到的问题