当前位置: 代码迷 >> python >> 试图了解python中的双索引
  详细解决方案

试图了解python中的双索引

热度:98   发布时间:2023-06-16 10:13:18.0
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编码器,所以此查询!..在left [-1] [1]中,我理解[-1]使我想到了最后一个索引,但是第二个索引[1]意味着什么。

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

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)]

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

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

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

通过运行代码并在代码调用left[-1][1]之前打印出left的值,可以发现这一点。 这样,您可以查看剩下的数据类型。