【问题标题】:class function to remove value from array list object从数组列表对象中删除值的类函数
【发布时间】:2021-12-10 07:38:23
【问题描述】:

我正在尝试编写一个类函数,从我的数组列表中删除第一次出现的 e(int 数)并让它返回 True,但如果没有出现,则返回 false 而不调整我的数组列表。

def removeVal(self, e):
    A = self.inArray
    for x in A:
        i+=1
        if x == e:
            A.remove(i)
            self.inArray = A
            return True
        return False

list = [1,2,2,3,4,5]
list.removeVal(2)
print(list)

class ArrayList:
    def __init__(self):
        self.inArray = []
        self.count = 0
        
    def get(self, i):
        return self.inArray[i]

    def set(self, i, e):
        self.inArray[i] = e

    def length(self):
        return self.count

def isIn(A, k): # similar to this
#    for i in range(len(A)):
#        if A[i] == k:
#            return True
#    return False

【问题讨论】:

  • 究竟是什么不起作用/问题出在哪里?
  • 对不起,我不明白你的意图,请你详细说明。您所说的类函数是指 python 对象中的方法吗?
  • 看起来您正试图在迭代列表时对其进行修改,这是有问题的。
  • 您的代码中没有类。 A = self.inArray 没有它就毫无意义
  • 您正在尝试像编写 Java 一样编写 Python。即使你想要 setter 和 getter,也不是这样做的

标签: python list object arraylist


【解决方案1】:

您可以简单地检查 e 是否在列表中。 list.remove(x) 删除列表中第一次出现的 x。

您可以使用您正在使用的列表切换“您的列表”。

def removeVal(self, e):
    if e in yourlist:
        yourlist.remove(e)
        return True
    return False

【讨论】:

  • yourList 甚至在这段代码 sn-p 中都不存在。这不可能运行
  • 不清楚他想使用哪个列表,因为他没有指定类的属性。因此我说他可以用他希望使用的列表切换“yourlist”。
  • 那就别回答了。如果你甚至不知道他们在问什么,这不可能是一个答案
  • 我试图在不使用“if e in list”的情况下复制它,例如类似于(见原始帖子末尾)
  • 更不用说这段代码真的没有意义。为什么要返回一个布尔值来从列表中删除项目?如果它在列表中,您现在已经确定它不在,那么True 是什么意思?
猜你喜欢
  • 1970-01-01
  • 2021-12-13
  • 1970-01-01
  • 1970-01-01
  • 2020-01-20
  • 2021-01-01
  • 2011-11-05
  • 2022-01-07
  • 2017-03-10
相关资源
最近更新 更多