我有一个清单:
a = [1, 2, 6, 4, 3, 5, 7]
请向我解释如何检查元素是否只出现在列表中一次?
请解释是否所有从1到len(a)
的元素都在列表中。例如,在列表'a'中,1到7的元素在列表中,但如果列表是b = [1, 4, 3, 5]
,则不是所有1到4的元素都不在列表中。
谢谢!
答案 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]