Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除重复项的面向对象编程(Python)_Python_List_Duplicates - Fatal编程技术网

删除重复项的面向对象编程(Python)

删除重复项的面向对象编程(Python),python,list,duplicates,Python,List,Duplicates,我正在尝试从已排序列表中删除一项。如果项目不在列表中,则列表保持不变。如果该项出现多次,则只删除该项的一次出现。同样,我不允许使用内置列表函数,但目前,我只是想让代码正常工作 class SortedList: def __init__(self): self.s_list = [] def insert(self, item): self.s_list.append(item) def remove(self, item):

我正在尝试从已排序列表中删除一项。如果项目不在列表中,则列表保持不变。如果该项出现多次,则只删除该项的一次出现。同样,我不允许使用内置列表函数,但目前,我只是想让代码正常工作

class SortedList:
    def __init__(self):
        self.s_list = []
    def insert(self, item):
        self.s_list.append(item)

    def remove(self, item):
        finalSet=[]
        for item in self.s_list:
            if item not in finalSet:
                finalSet.append(item)
                return finalSet
    def __str__(self):
        return str(self.s_list)


您的删除功能似乎非常混乱

def remove(self, item):
    finalSet=[]
    for item in self.s_list:
        if item not in finalSet:
            finalSet.append(item)
            return finalSet
  • 为什么要创建一个新列表,不应该修改现有列表吗
  • 函数中有两个不同的
    。一个是函数的参数,另一个在循环中。循环中的一个将替换参数。给他们起不同的名字
  • 您几乎立即返回列表,在循环完成之前可能不想返回。你的回报声明太过分了
  • 因为你给两个不同的变量起了相同的名字,所以我猜不出你在循环中到底想做什么

  • 您的remove函数看起来很混乱

    def remove(self, item):
        finalSet=[]
        for item in self.s_list:
            if item not in finalSet:
                finalSet.append(item)
                return finalSet
    
  • 为什么要创建一个新列表,不应该修改现有列表吗
  • 函数中有两个不同的
    。一个是函数的参数,另一个在循环中。循环中的一个将替换参数。给他们起不同的名字
  • 您几乎立即返回列表,在循环完成之前可能不想返回。你的回报声明太过分了
  • 因为你给两个不同的变量起了相同的名字,所以我猜不出你在循环中到底想做什么


  • 我认为如果
    output
    是一个集合,1)它会更快2)它总是会被排序
    set
    s没有排序,它们的迭代顺序是未定义的:。它们确实具有不包含重复项的属性。但我所拥有的有什么问题吗?为什么它不做我想让它做的事情呢?请删除我的正确答案。你想在帮助下解决家庭作业而不是剪切粘贴解决方案是正确的。可能会改写你的问题,因为这个问题可能会以重复的形式结束。我认为如果
    输出
    是一个集合,1)它会更快2)它总是被排序
    集合
    没有排序,它们的迭代顺序未定义:。它们确实具有不包含重复项的属性。但我所拥有的有什么问题吗?为什么它不做我想让它做的事情呢?请删除我的正确答案。你想在帮助下解决家庭作业而不是剪切粘贴解决方案是正确的。可能会重写您的问题,因为此问题可能会以重复形式结束。Dedent的可能重复返回语句两级,您的代码应该可以工作。:-/仍然不会删除任何内容Dedent的可能重复返回语句两级,您的代码应该可以工作。:-/仍然不会删除除del之外的任何内容函数,有另一种方法可以从列表中删除重复项,而无需创建另一个列表并将元素添加到新列表??关于变量你是对的。我用变量“x”替换了循环中的项。循环中尝试做的就是,对于列表中的每个项,如果该项不在空列表中,则将ittem附加到空列表中list@WillS,有多种删除元素的列表方法。但是你似乎在你能用的东西上受到限制。del是我所知道的唯一一个非方法。你的循环按照你所描述的(在错误的地方减去返回值)。但最终将创建一个没有重复项的新列表。但是您正在编写一个删除函数,您不想删除一个特定的元素,而不是重复的元素吗?另外,在末尾返回列表。如果要更改列表,应将列表分配给本地列表。在主模块中运行时,若要调用它,我会键入类似s1.remove(42)的内容,所以是的,它确实调用以删除特定元素?这是否意味着我的函数全错了?除了del函数,还有另一种方法可以从列表中删除重复项,而无需创建另一个列表并将元素添加到新列表??关于变量你是对的。我用变量“x”替换了循环中的项。循环中尝试做的就是,对于列表中的每个项,如果该项不在空列表中,则将ittem附加到空列表中list@WillS,有多种删除元素的列表方法。但是你似乎在你能用的东西上受到限制。del是我所知道的唯一一个非方法。你的循环按照你所描述的(在错误的地方减去返回值)。但最终将创建一个没有重复项的新列表。但是您正在编写一个删除函数,您不想删除一个特定的元素,而不是重复的元素吗?另外,在末尾返回列表。如果要更改列表,应将列表分配给本地列表。在主模块中运行时,若要调用它,我会键入类似s1.remove(42)的内容,所以是的,它确实调用以删除特定元素?这是否意味着我的功能完全错误?