【问题标题】:Getting the ValueError: list.remove(x): x not in list when trying to remove a value from a list获取ValueError:list.remove(x):尝试从列表中删除值时x不在列表中
【发布时间】:2018-01-05 13:39:29
【问题描述】:

我试图让它在下面工作,但是当我运行代码时,我不断收到这个错误

Traceback(最近一次调用最后一次): 文件“F:/Computer Sci/Mathematics for Computing/Assignment 2/Assignment2.py”,第 15 行,在 array1.remove([7,2,3,5]) ValueError: list.remove(x): x 不在列表中

array1 = [[7,2,3,5],[7,2,90,0],[7,2,3,90],[7,3,3,5]] 
array2 = [[1,2,4,8],[1,90,4,0],[7,2,90,3],[4,2,4,5]]

for x in range (0,4):
    if x == 0:
        continue
    for y in range (0,4):
        if array1[0][y] < array1[x][y]:
            array1.remove([7,2,3,5])

【问题讨论】:

  • 错误信息很清楚,你在这里期待什么?
  • 我不明白为什么当 [7,2,3,5] 为尽管它告诉我它不是列表中的真正价值?
  • 我假设它在循环的早期迭代中被删除,然后您试图在后续迭代中再次删除它。
  • 删除值后我将如何结束循环?
  • 您能告诉我们您的目标是什么吗?

标签: python loops for-loop iteration


【解决方案1】:

正如我在评论中所说,您的代码可以改进

您可以使用函数并在满足条件后返回

def func(array1, to_remove):
    for lst in array1:
        for index, n in enumerate(lst):
            if array1[0][index] < n:
                array1.remove(to_remove)
                return True
    return False

或者使用标志

flag = False
for lst in array1:
    for index, n in enumerate(lst):
        if array1[0][index] < n:
            array1.remove([7,2,3,5])
            flag = True
            break
    if flag:
        break

【讨论】:

  • 如果你想让它成为一个函数,你也可以将元素作为参数传递。
  • @nlsdfnbch 是的,为什么不呢?
  • 现在很漂亮。 ;)
  • @taoufikA 你能解释一下你创建的函数是如何工作的吗?
  • 它需要数组和您要删除的元素,一旦删除它将返回(更新)True,否则它将返回 False
猜你喜欢
  • 2011-09-11
  • 2018-07-05
  • 1970-01-01
  • 2018-01-23
  • 2021-12-15
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多