问题:给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
使用代码如下没有办法通过测试示例,必须将最后一行代码改成 nums[:]=nums[-k:]+nums[:-k]切片形式:

原因:列表的切片操作 nums[start:end] 不会修改原列表,而是返回一个新的列表对象
例如:
nums = [1, 2, 3, 4, 5]
print(nums[-2:])  # 输出 [4, 5]
print(nums[:-2])  # 输出 [1, 2, 3]
print(nums)       # 原列表 nums 没有改变,仍为 [1, 2, 3, 4, 5]
拼接两个切片:
- nums[-k:] + nums[:-k]是将两个切片的结果拼接成一个新的列表。
- 它不会影响原来的 nums列表。
nums = [1, 2, 3, 4, 5]
k = 2result = nums[-k:] + nums[:-k]
print(result)  # 输出 [4, 5, 1, 2, 3]
print(nums)    # 原列表 nums 不变,仍为 [1, 2, 3, 4, 5]
尽管我们令nums= nums[-k:] + nums[:-k],它其实相当于重新创建了一个列表,只是名称一样而已,但已经指向了别的地址了
切片赋值:nums[:] = nums[-k:] + nums[:-k]
 
- nums[:]是对原列表的切片赋值,它会修改原列表的内容,而不会更改- nums的引用。
- 换句话说,nums[:]表示“更新整个列表的内容为右侧表达式的结果”。
| 操作 | 是否修改原列表 nums | 备注 | 
|---|---|---|
| nums[-k:] + nums[:-k] | 否 | 生成一个新列表,不影响原列表 nums。 | 
| nums = nums[-k:] + nums[:-k] | 否(仅改变引用) | 创建新列表并重新赋值给 nums,原列表可能被丢弃。 | 
| nums[:] = nums[-k:] + nums[:-k] | 是 | 更新原列表 nums的内容为右侧表达式的结果,但列表引用保持不变。 |