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

发布于 2024-09-27 04:05:10 字数 240 浏览 2 评论 0原文

我有一个列表:

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

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

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

谢谢你!

I have a list:

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

Please, explain to me how to check whether element appears only once in in the list?

Please, also explain if all elements from 1 to len(a) are in the list. For instance, in list 'a' element from 1 to 7 are in the list, but if the list is b = [1, 4, 3, 5], then not all elements from 1 to 4 are not in the list.

Thank you!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

歌枕肩 2024-10-04 04:05:10

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

def occurs_once(a, item):
    return a.count(item) == 1

仅当 item 在列表中只出现一次时才为 true。

第二个问题见 Pokes 的回答

When I read your question, I took a different meaning from it than mark did. If you want to check if a particular element appears only once, then

def occurs_once(a, item):
    return a.count(item) == 1

will be true only if item occurs in the list exactly once.

See Pokes answer for the second question

深居我梦 2024-10-04 04:05:10
len( set( a ) ) == len( a )

对于第一个问题,

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

对于第二个问题。

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

for the first question, and

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

for the second.

坏尐絯℡ 2024-10-04 04:05:10

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

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

For your first question if your elements are hashable you can create a set containing the elements and check its length:

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

Alternatively you can use this function which can give better performance than the above if the result is False (but worse performance when the result is True):

def are_all_elements_unique(l):
    seen = set()
    for x in l:
        if x in seen:
            return False
        seen.add(x)
    return True
通知家属抬走 2024-10-04 04:05:10

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

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

For the second question you might want to check

sorted(a) == range(1, len(a) + 1)
娇俏 2024-10-04 04:05:10

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

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

i understood you want something like that:

[x for x in a if a.count(x) == 1]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文