将多个数组与多个数组进行比较(在ruby或python中)

时间:2017-04-12 22:48:00

标签: python arrays ruby compare multiplication

我有39208个阵列。标记为a1, a2, a3, a4,... a39208。 我希望能够将每个数组与所有其他数组进行比较。

(a1-a2).empty?; (a1-a3).empty?; (a2-a3).empty?;... (a4-a39208).empty?

我不确定如何在代码中编码数组名称更改。例如,如果我有一个循环:

  b = 0
     loop do
       b +=1
       m = ["a1" + b.to_s]
       w = m
       k = (m - a1).empty?
     puts k
   if b == 39208
  break
  end
 end

非实际代码:只是想传达一个想法。 m应更改为a2, a3, a4, a5的位置随着循环的进行。我知道它会在最后附加一个#,我最终会得到a11, a12, a13

所以不必写(a1-a2).empty?; (a1-a3).empty?; (a2-a3).empty?;... (a4-a39208).empty?直到时间结束。如何将代码(a1-a2).empty?更改为-a3, -a4, -a5,... -a390208。 => (a1-a39028).empty?

我试图做的是在代码中输入另一个数组,改变哪个数组面对另一个数组。

也许还有其他方法可以解决这个问题。我可以将数组更改为列表或字符串。

编辑: 每个数组包含30个数字,有39208个数组。我正在寻找所有相同的数组并列出每个重复的数组。

1 个答案:

答案 0 :(得分:6)

首先,这里更大的问题是你正在处理39208个变量。几乎可以肯定,有一种更好的方法来处理数据,而无需处理那么多变量。我不知道你是如何将这些数据放入你的代码中的,但是你应该首先将所有这些变量放在一个数组中,这样你就不必处理这么多变量,例如< / p>

select * from hightransaction

之后,您可以使用Array#combination来迭代ResponseObject result = new ResponseObject(); result = (InnerClasses.ResponseObject)JSON.deserialize(json, InnerClasses.ResponseObject.class); 中的所有对:

all_arrays = [a1, a2, a3, ... a39208]

all_arrays会在all_arrays.combination(2).map do |arr1, arr2| (arr1 - arr2).empty? end 中为您提供所有元素。

再看一遍,应该指出你可能还想反过来比较这些元素。对于某些数组,all_arrays.combination(2)可能为真,但all_arrays可能为false。 e.g。

(a1 - a2).empty?

如果这对您的用例很重要,请改用Array#permutation

(a2 - a1).empty?