比较具有索引

时间:2015-12-24 12:30:41

标签: python arrays

我需要一种方法来以最快的最快方式比较多个数字数组。例如,我有

[1, 2, 3, 4]
[2, 2, 3, 1]
[2, 2, 2, 3]
[1, 2, 3, 3]

排序如下:最重要的元素是索引0,因此索引0处值为1的所有数组都在索引0处值为2的数组之前。如果索引0相同则使用索引1进行比较两个阵列。

sorted_arrays = sorted(arrays, key: lambda x: x)

做我想做的事,但它相当慢。我认为它比较所有元素并且比我提出的另一个天真的实现要快得多:

class Array(object):
    def __init__(self, values):
        self.values = values

    def __cmp__(self, other):
        for arr1, arr2 in itertools.izip(self.values, other.values):
            if arr1 < arr2:
                return -1
            elif arr1 > arr2:
                return 1
        return 0

arrays = sorted([
   Array([1, 2, 3, 4]),
   Array([2, 2, 3, 1]),
   Array([2, 2, 2, 3]),
   Array([1, 2, 3, 3])
])

是否有更快的方法可以做到这一点(不将每个数组与每个其他数组(以及可能的数组的所有元素)进行比较)?

0 个答案:

没有答案