python: nums 和 nums[:] 的区别
2021/9/20 20:57:02
本文主要是介绍python: nums 和 nums[:] 的区别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
最近在刷题时遇到一个问题,添加数组 nums 和添加 nums[:] 会得到不同的输出结果。
写个例子:
nums = [1,2,3,4,5] # 创建一个数组 res = [] res.append(nums) nums[0], nums[4] = nums[4], nums[0] # 交换数组中的元素 res.append(nums) print(res)
以上这个例子,先创建一个包含5个整数的数组 nums,并添加到数组 res 中;接着交换数组 nums 的第1个元素和第5元素,并且添加到数组 res 中,不出意外,结果应该是:
[[1, 2, 3, 4, 5], [5, 2, 3, 4, 1]]
但是,最后的结果是:
[[5, 2, 3, 4, 1], [5, 2, 3, 4, 1]]
但是呢,如果把 res.append(nums) 改成 res.append(nums[:]),像下面这样:
nums = [1,2,3,4,5] # 创建一个数组 res = [] res.append(nums[:]) nums[0], nums[4] = nums[4], nums[0] # 交换数组中的元素 res.append(nums[:]) print(res)
就得到如下结果:
[[1, 2, 3, 4, 5], [5, 2, 3, 4, 1]]
后来想了很久,nums 和 nums[:] 指向的对象不同,nums 是数组的对象,而 nums[:] 是对指数组 nums 的元素,res.append(nums) 是把整个对象添加到 res 中,所以 res = [ nums, nums],当 nums 发生改变时,res 中之前添加的 nums 也会发生改变;
而 res.append(nums[:]) 是把 nums 中的所有元素添加到 res,而非 nums 对象本身。
为了防止以后出现重复错误,写下该博客,让自己加深影响!
这篇关于python: nums 和 nums[:] 的区别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南