请解释代码行nums[:] = unique的含义及对应Python去重函数实现
解释代码行
nums[:] = unique的含义 先结合你给出的完整去重函数来看:
class Solution(object): def removeDuplicates(self, nums): unique = [] for num in nums: if num not in unique: unique.append(num) nums[:] = unique return len(nums)
核心含义
nums[:] = unique是Python里的原地修改列表操作,作用是把原列表nums的所有元素替换成unique列表里的元素,而非创建一个新的列表对象。
为什么不直接用nums = unique?
如果写nums = unique,只是把函数内部的局部变量nums指向了新的unique列表,但外部调用该函数时传入的原列表对象不会有任何变化——相当于你在函数里换了个变量指向的目标,原列表本身还是原样。
而nums[:]是对原列表做全切片赋值,它会直接修改原列表的内容:清空原列表里的所有元素,再把unique的元素依次填充进去。这样外部的原列表会被直接更新,完全符合这类去重题(比如LeetCode移除重复元素题型)要求的「原地修改输入数组」规则。
配合整个函数的逻辑
函数先遍历原nums,把不重复的元素收集到unique里,再通过nums[:] = unique把原数组改成去重后的版本,最后返回新的长度——既完成了去重,又保证了原数组被修改,同时返回正确的长度。
内容的提问来源于stack exchange,提问作者Siva Anchuri
相关产品推荐
相关产品推荐

