从一道Python面试题说起(大神勿入)
2024-08-25 09:14:42
list = [[]] *5
print(list)
num = 5*5
num
>>> 25
str = 'str' * 5
str
>>> 'strstrstrstrstr'
list = [[]] * 5
>>>[[], [], [], [], []]
list[0].append(10)
>>>[[10], [10], [10], [10], [10]]
list[1].append(20)
>>>[[10, 20], [10, 20], [10, 20], [10, 20], [10, 20]]
list.append(30)
>>>[[10, 20], [10, 20], [10, 20], [10, 20], [10, 20], 30]
上面第1题和第4题大家都没问题,可能会有人对第2题和第3题提出疑问,明明改的是list里的第一个和第二个元素,为什么所有的子list都变了呢?其实当我们[ [ ] ] * 5的时候,本质上并没有把list复制五遍,这五个元素指向的是同一个内存地址,也就是同一个子list的内存地址。所以当我们对第一个元素append(10)的时候,所有的子list都跟着一起变。
tips: 如果最后将 list[2] = 40, 那其他的子list会受到影响吗,请读者自行测试吧 ! 如果你测试完之后并不明白,没有关系,可以参考这一篇文章,python--关于赋值与深浅拷贝的认识。
最新文章
- jquery trigger-bind示例
- js输出到控制台
- centos中 mysql 5.7安装
- Demo12SimpleAdapter
- WebLogic11g-半小时让你的domain集群化
- 深入理解UITableView
- Linux shell中的一个问题 ${}带正则匹配的表达式
- Ubuntu配置和修改IP地址
- eclipse 标签标题乱码解决方法
- c++工程重复编译与重复定义
- python_类与对象学习笔记
- 详解Vue 开发模式下跨域问题
- How to get API key (APPID)
- wget命令【转】
- 使用let声明变量的理解
- Flask-SQLAlchemy 无法创建Sqlite 数据库???
- 使用 Maven 来管理项目 &; 从 0 开始搭建 Maven 项目
- 19 网络编程--Socket 套接字方法
- HTML5新协议介绍 WebSocket
- java date相关
热门文章
- 385cc412a70eb9c6578a82ac58fce14c md5破解
- 深入理解 react-router 路由系统
- [bzoj 2017] [Usaco2009 Nov]硬币游戏
- hdu_1754I Hate It(线段树)
- Matrix Chain Multiplication(表达式求值用栈操作)
- [国嵌笔记][011][Linux密码破解]
- 数据结构课程设计四则运算表达式求值(C语言版)
- include指令与include动作的区别(面试要考)
- Tp框架查询分页显示与全部查询出来显示运行时间快慢有区别吗?
- vueThink权限配置