【问题标题】:Finding the count of divisors of each array item within the array查找数组中每个数组项的除数计数
【发布时间】:2022-01-23 20:21:16
【问题描述】:

我有一个数组,例如:[2,4,8,2]。我想找到列表中每个项目的除数,但除数只能是数组的元素。

  • 2 可以被 [2,2] 整除,所以要求的数字是 2
  • 4 可以被 [2,4,2] 整除,所以要求的数字是 3
  • 8 可以被 [2,4,8,2] 整除,所以要求的数字是 4
  • 2 可以被 [2,2] 整除,所以要求的数字是 2

我有一个使用双 for 循环的解决方案,但我相信需要一个更优化的解决方案。有任何想法吗? 谢谢!

【问题讨论】:

    标签: python arrays


    【解决方案1】:

    你无法避免双重循环,但你可以优化它们并将它们组合在一个列表理解中:

    from collections import Counter
    
    L = [2,4,8,2]
    counts = Counter(L)
    R = [ sum(c for d,c in counts.items() if n%d==0) for n in L ]
    
    print(R)    
    [2, 3, 4, 2]
    

    【讨论】:

      猜你喜欢
      • 2015-03-07
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多