李万金 发表于 2020-8-2 23:21:03

求助 关于sorted函数的key参数

sorted_id = sorted(range(len(nums)), key=lambda k: nums)
nums是一个列表,key是比较的参数,lambda是匿名函数,但后面的nums【k】是什么意思?


class Solution:
    def twoSum(self, nums, target):
      """
      :type nums: List
      :type target: int
      :rtype: List
      """
      sorted_id = sorted(range(len(nums)), key=lambda k: nums)
      head = 0
      tail = len(nums) - 1
      sum_result = nums] + nums]
      while sum_result != target:
            if sum_result > target:
                tail -= 1
            elif sum_result < target:
                head += 1
            sum_result = nums] + nums]
      return , sorted_id]

Twilight6 发表于 2020-8-2 23:32:14



key是比较的参数,lambda是匿名函数,但后面的nums【k】是什么意思?

这里的 nums 的 k 就是 nums 的下标索引,也就是通过 range(len(nums)) 产生一个和 nums 下标正好一致的整数序列

range(len(nums)) 将会一个个传入 key 参数的匿名函数中的 k 参数的值,而对应排序就是对应的列表中的元素

而将通过比较元素大小,来排序 range(len(nums)) 产生的序列顺序

简单来说 这里的 sorted(range(len(nums)), key=lambda k: nums) 就是通过列表中对应索引值的元素的值,来对其索引值进行排序

李万金 发表于 2020-8-2 23:45:21

Twilight6 发表于 2020-8-2 23:32
这里的 nums 的 k 就是 nums 的下标索引,也就是通过 range(len(nums)) 产生一个和 nums 下标正 ...

谢谢你的回复,我上传了一张照片,我很困惑的是最后一次对num的排序。按照我的理解不应该是【0,2,3,1】吗?不是比较num的大小,然后在新建列表里显示num列表对应元素的排位吗?

Twilight6 发表于 2020-8-3 00:07:45

李万金 发表于 2020-8-2 23:45
谢谢你的回复,我上传了一张照片,我很困惑的是最后一次对num的排序。按照我的理解不应该是【0,2,3,1】吗 ...



num = 对应位置参数是 也就是
0 对 2
1 对 7
2 对 11
3 对 5

排序后元素的大小顺序应该是 则对应原先的位置参数就为 这样看得懂吧

李万金 发表于 2020-8-3 15:36:01

Twilight6 发表于 2020-8-3 00:07
num = 对应位置参数是 也就是
0 对 2
1 对 7


恍然大悟,非常感谢{:5_95:}
页: [1]
查看完整版本: 求助 关于sorted函数的key参数