如何在python中检查元素是否只出现在列表中一次?

时间:2010-10-10 09:38:53

标签: python list iteration

我有一个清单:

a = [1, 2, 6, 4, 3, 5, 7]

请向我解释如何检查元素是否只出现在列表中一次?

请解释是否所有从1到len(a)的元素都在列表中。例如,在列表'a'中,1到7的元素在列表中,但如果列表是b = [1, 4, 3, 5],则不是所有1到4的元素都不在列表中。

谢谢!

5 个答案:

答案 0 :(得分:6)

当我读到你的问题时,我从中得到了与马克不同的含义。如果您想检查特定元素是否只出现一次,那么

def occurs_once(a, item):
    return a.count(item) == 1
仅当item恰好在列表中出现一次时,

才会成立。

请参阅第二个问题的Pokes答案

答案 1 :(得分:5)

对于第一个问题,如果您的元素是可以清除的,您可以创建一个包含元素的集合并检查其长度:

len(set(a)) == len(a)

或者您可以使用此函数,如果结果为False,则可以提供比上述更好的性能(但是当结果为True时性能更差):

def are_all_elements_unique(l):
    seen = set()
    for x in l:
        if x in seen:
            return False
        seen.add(x)
    return True

答案 2 :(得分:4)

len( set( a ) ) == len( a )

第一个问题,

( len( set( a ) ) == len( a ) == max( a ) ) and min( a ) == 1

第二个。

答案 3 :(得分:4)

对于第二个问题,您可能需要检查

sorted(a) == range(1, len(a) + 1)

答案 4 :(得分:1)

我知道你想要这样的东西:

[x for x in a if a.count(x) == 1]