python的一个面试题
2016-02-29 20:43
661 查看
今天遇到了个面试题,感觉很不错,补充了一下记录下来。
解析:
得到
<span style="font-size:18px;">list1:<span style="font-family:宋体;">None</span></span>是因为append操作后是没有返回值的,所以是None,
b:[[10], [10], [10], [10], [10]]简单的说是因为5个列表指向的是同一个列表(也就是a),看下面(请忽略图丑)
这里的[[]]*5就相当于图中那样定义了几个新的变量,但是他们都是指向同一个列表(这其实是浅拷贝)。
<span style="font-size:18px;">b:[[10, 20], [10, 20], [10, 20], [10, 20], [10, 20]]</span>这是因为上面
已经把原列表更改了,所以不是<span style="font-size:18px;">b:[[20], [20], [20], [20], [20]]</span>
(这里容易粗心忘记之前对列表的更改)
<pre name="code" class="python" style="font-size: 18px;">
a = [[]] b = [[]]*5 print 'b:%s'%b list1 = b[1].append(10) print 'list1:%s'%list1 print 'b:%s'%b list2 = b[2].append(20) print 'list2:%s'%list2 print 'b:%s'%b
先做再看答案吧。
答案:
b:[[], [], [], [], []] list1:<span style="font-family: 宋体;">[[], [10], [], [], []]</span> b:[[10], [10], [10], [10], [10]] list2:<span style="font-family: 宋体;">[[], [], [20], [], []]</span> b:[[], [], [20], [], []]
如果上面你都对的上,说明你应该看下下面的正确答案,要是不相信还可以自己敲敲,说不定你会有更多的想法或者迷惑。
正确答案:
b:[[], [], [], [], []] list1:None b:[[10], [10], [10], [10], [10]] list2:None b:[[10, 20], [10, 20], [10, 20], [10, 20], [10, 20]]
解析:
[[]]*5不是得到[[]][[]][[]][[]][[]](肯定有人得到这个答案滴)
看看下面:
得到
<span style="font-size:18px;">list1:<span style="font-family:宋体;">None</span></span>是因为append操作后是没有返回值的,所以是None,
b:[[10], [10], [10], [10], [10]]简单的说是因为5个列表指向的是同一个列表(也就是a),看下面(请忽略图丑)
这里的[[]]*5就相当于图中那样定义了几个新的变量,但是他们都是指向同一个列表(这其实是浅拷贝)。
<span style="font-size:18px;">b:[[10, 20], [10, 20], [10, 20], [10, 20], [10, 20]]</span>这是因为上面
<span style="font-size:18px;">list1 = b[1].append(10)</span>
已经把原列表更改了,所以不是<span style="font-size:18px;">b:[[20], [20], [20], [20], [20]]</span>
(这里容易粗心忘记之前对列表的更改)
<pre name="code" class="python" style="font-size: 18px;">
相关文章推荐
- 一个关于if else容易迷惑的问题
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例