【问题标题】:How to compare values within an array in Python - find out whether 2 values are the same如何在 Python 中比较数组中的值 - 找出 2 个值是否相同
【发布时间】:2011-07-21 17:17:51
【问题描述】:

我基本上有一个由50个整数组成的数组,我需要找出这50个整数是否相等,如果相等,我需要执行一个动作。

我该怎么做呢?据我所知,Python 中目前还没有这样的函数吗?

【问题讨论】:

    标签: python arrays list


    【解决方案1】:

    如果你的意思是你有一个列表并且你想知道是否有任何重复的值,那么从列表中创建一个集合,看看它是否比列表短:

    if len(set(my_list)) < len(my_list):
        print "There's a dupe!"
    

    不过,这不会告诉您重复值是什么。

    【讨论】:

    • 完美,谢谢!还有一件事,如果列表中有重复值,为什么列表的长度会在转换为集合时发生变化?集合会自动删除重复项吗?谢谢
    【解决方案2】:

    如果你有 Python 2.7+,你可以使用Counter

    >>> import collections
    >>> input = [1, 1, 3, 6, 4, 8, 8, 5, 6]
    >>> c = collections.Counter(input)
    >>> c
    Counter({1: 2, 6: 2, 8: 2, 3: 1, 4: 1, 5: 1})
    >>> duplicates = [i for i in c if c[i] > 1]
    >>> duplicates
    [1, 6, 8]
    

    【讨论】:

    • 如果您需要知道哪个数字出现多次,这可能是最好的解决方案。
    • 很好,我不知道这个。确实比我的回答好 (+1)
    【解决方案3】:

    如果您的操作需要知道数字或该数字在您的输入列表中重复的次数,那么groupby 是一个不错的选择。

    >>> from itertools import groupby
    >>> for x in groupby([1,1,2,2,2,3]):
    ...     print x[0],len(list(x[1]))
    ... 
    1 2
    2 3
    3 1
    

    第一个数字是元素,第二个数字是重复次数。 groupby 在排序列表上工作,因此请确保对输入列表进行排序,例如。

    >>> for x in groupby(sorted([1,1,2,4,2,2,3])):
    ...     print x[0],len(list(x[1]))
    ... 
    1 2
    2 3
    3 1
    4 1
    

    【讨论】:

      【解决方案4】:

      您可以将列表转换为 Set,并检查它们的长度。

      >>> a = [1, 2, 3]
      >>> len(set(a)) == len(a)
      True
      >>> a = [1, 2, 3, 4, 4]
      >>> len(set(a)) == len(a)
      False
      

      【讨论】:

        【解决方案5】:
        >>> arbitrary_list = [1, 1, 2, 3, 4, 4, 4]
        >>> item_occurence = dict([(item, list.count(item)) for item in arbitrary_list])
        {1: 2, 2: 1, 3: 1, 4: 3}
        

        如果您想查看哪些值不是唯一的,您可以通过以下方式获取这些值的列表

        >>> filter(lambda item: item_occurence[item] > 1, item_occurence)
        [1, 4]
        

        【讨论】:

          猜你喜欢
          • 2020-12-30
          • 2016-09-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-03-16
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多