python删除列表中的重复条目和打印唯一列表的输出

时间:2016-02-08 20:51:00

标签: python-3.x

def rem_dups():
    output = []
    inpt = [1, 2, 3, 4, 1, 2, 3, 4, 5, 6]
        for x in inpt:
            if x not in output:
            output.append()
    return output

所以试图找出如何使用上面的2个vars(输出/输入)我的函数,其中输入有数字列表,输出是空的,但最后应该有唯一数字列表,不包括inpt列表中的任何重复。当我运行这个程序时,我得到了#34; Process完成了退出代码0 "我认为这意味着程序正确执行但没有看到脚本结束时返回输出的任何输出。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:2)

您的代码存在三个问题。

  1. 您必须调用该函数才能看到任何输出。最后添加print(rem_dups())

  2. 当你这样做时,你会得到一个TypeError,因为你没有向append方法传递任何东西。更改为output.append(x)

  3. 您使用的算法是O(k * k),其中k是唯一条目的数量,因为x not in output中的线性搜索。这是不必要的缓慢,并将咬大量输入。我们假设您希望输出成为保留订单的列表。

  4. 这是一个修复。

    def rem_dups():
        output = []
        uniques = set()
        inpt = [1, 2, 3, 4, 1, 2, 3, 4, 5, 6]
        for x in inpt:
            if x not in uniques:
                uniques.add(x)
                output.append(x)
        return output
    
    print(rem_dups())
    

答案 1 :(得分:0)

inpt = [1,2,3,4,1,2,3,4,5,6]
INPT =列表(集(INPT))

此set()函数删除了dublicates

答案 2 :(得分:0)

你对Process finished with exit code 0是正确的。这意味着您的脚本执行时没有错误。

当从命令行运行脚本时,如$ python myscript.py,唯一的输出将是打印到stdout的任何内容。 Python的return不会向shell返回任何内容,它只能在python中运行。

只需在脚本或main()函数的末尾调用print(output),就可以打印到std。 (或其他任何地方)