【问题标题】:Python function which takes two arrays of integers and returns the number of integers that occur in both arrays [duplicate]Python函数,它接受两个整数数组并返回两个数组中出现的整数个数[重复]
【发布时间】:2021-01-14 04:34:43
【问题描述】:

例如,如果它采用数组 [1,44,5,8,35] 和 [35,12,44,7,42,31] 它将返回 2, 因为两个数组中恰好出现了两个整数(44 和 35)。 代码应该是库免费的

我已经尝试了以下代码:

A = [1,44,5,8,35] 
B = [35,12,44,7,42,31]


def occurInBoth(A, B):
        for i in range(len(A)):
            for j in range(len(B)):
              if A[i] == B[j]:
                  newA = [A[i]]
                  print(newA)
                
occurInBoth(A, B)

我得到的结果是: [44] [35]

我希望得到 2 个结果

只是编辑这个问题,因为由于这个模块的性质,我不能使用库、导入任何东西、使用交集等。我已经研究了如何做到这一点,但我只能得到我不能用于这个任务的答案。抱歉,如果之前有人问过这个问题,但没有找到任何与此特定任务相关的内容

【问题讨论】:

    标签: python arrays


    【解决方案1】:

    你对你的 for 循环有正确的想法。您要做的是创建一个累加器值,并在每次找到匹配项时将其加 1:

    def occurInBoth(A, B):
        total = 0
        
        for i in range(len(A)):
            for j in range(len(B)):
              if A[i] == B[j]:
                  total += 1
    
        return total
    

    【讨论】:

    • 非常感谢您的成功!我想我必须以某种方式将公共值放入一个数组中,然后找到该数组的长度,但这要快得多
    【解决方案2】:

    最简单的方法是:

    def function_array_intersect(arr1,arr2):
        return list(set(arr1).intersection(set(arr2)))
    
    
    >>> function_array_intersect([1,2,3],[3,4,5])
    Ans: [3]
    

    编辑:要获得 len,只需在 return 语句中添加 len(list(set(arr1).intersection(set(arr2))))

    【讨论】:

      【解决方案3】:

      如果两个列表都只包含唯一的数字(它们自己的列表中没有重复),下面的代码是最简单的解决方案。我们只需要将 A+B 组合列表的长度与放入集合中的相同整数的长度进行比较(删除所有重复项)。

      def occurInBoth(a, b):
          return len(a+b) - len(set(a+b))
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-06-09
        • 1970-01-01
        • 1970-01-01
        • 2016-02-19
        • 1970-01-01
        • 1970-01-01
        • 2012-11-10
        相关资源
        最近更新 更多