如果列表中的所有项目都不同,我如何定义函数返回False,否则返回True

Drx*_*x20 3 python for-loop

我试图创建一个检查列表项清晰度的函数,如果没有多个匹配元素,则返回false.

def AllDifferent(s):
    for i in s:
        for i2 in s:
            if i2 == i:
                return False
            else:
                return True
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.我究竟做错了什么?

Pat*_*ugh 6

你可以用一个set.A set是仅保留任何对象的一个​​副本的集合.所以set([1,1,1,1,1,1])是一样的set([1]).所以,让我们检查set它的长度(大小)是否与list

def allDifferent(in_list):
    return len(set(in_list)) == len(in_list)
Run Code Online (Sandbox Code Playgroud)

请注意,Python中的可变数据类型不可清除,并且不能进入sets.对他们来说,我们需要更详细的解决方案

def allDifferent(in_list):
     my_list = in_list[:]
     while my_list:
         x = my_list.pop()
         if x in my_list:
             return False
     return True
Run Code Online (Sandbox Code Playgroud)

  • `in`是一个关键字:你不能将它用作变量. (2认同)