试图理解python中的双索引

时间:2017-02-15 22:03:04

标签: python

def countSmaller(self, nums):
        def sort(enum):
            half = len(enum) / 2
            if half:
                left, right = sort(enum[:half]), sort(enum[half:])
                for i in range(len(enum))[::-1]:
                    if not right or left and left[-1][1] > right[-1][1]:
                        smaller[left[-1][0]] += len(right)
                        enum[i] = left.pop()
                    else:
                        enum[i] = right.pop()
            return enum
        smaller = [0] * len(nums)
        sort(list(enumerate(nums)))
        return smaller

我是一个新的python编码器所以这个查询!..在左[-1] [1],我理解[-1]让我想到最后一个索引,但第二个索引[1]是什么意思。

2 个答案:

答案 0 :(得分:3)

第二个索引与第一个索引相同但具有嵌套值。 例如:

a = [(1, 2), (2, 3), (3, 4)]
a[-1]  # (3, 4)
a[-1][1]  # 4

在您的示例中,您没有包含数字的列表,但枚举转换为列表的对象

sort(list(enumerate(nums)))

这意味着你有这样的数据:

nums = [1, 2, 3, 4, 5]
enum_list = list(enumerate(nums))  # [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5)]

答案 1 :(得分:2)

似乎left是一个包含元组的数组。即数组的每个元素都是一个元组。

例如:left=[(value1oftuple1,value2oftuple1),(value1ofarray2,value2ofarray2)]

在这种情况下,left[-1][1]将引用数组最后一个元素中的第一个值(value1ofarray2)。

我发现这是通过运行代码并在代码调用left之前打印left[-1][1]的值来实现的。这样您就可以看到剩下的数据类型。