Python常见面试题013.请说出下面的代码返回结果是什么?
013.请说出下面的代码返回结果是什么?
*的坑;简单题
参考:https://docs.python.org/zh-cn/3.9/library/stdtypes.html#typesseq
示例代码
lists = [[]] * 3
lists[0].append(1)
请问lists此时是什么?
如果刚学python你应该会脱口而出
[[1],[],[]]但如果学过一段时间了,老师这么问,应该有猫腻,难道是?
所以答案是
[[1],[1],[1]]
- 那么为什么呢?
- 如果我想要结果是下面这样,该如何做?
[[1],[],[]]
原因说明
看下面的演示代码你就知道为何是上面的结果了
>>> list1 = [[]]
>>> id(list1[0])
2096763202240
>>> list1*3
[[], [], []]
>>> list1
[[]]
>>> list2 = list1*3
>>> list2
[[], [], []]
>>> id(list2[0])
2096763202240
>>> id(list2[1])
2096763202240
>>> id(list2[2])
2096763202240
从上面的演示代码可以看出
list1是一个含有一个空列表的列表,list1*3这样的行为中的三个元素都是对那个空列表的引用,都是同一个对象!
修改
lists1中的任何一个元素实际上都是对这一个空列表的修改事实只要是可变对象都是如此的效果
>>> list4 =[{}] * 4
>>> list4
[{}, {}, {}, {}]
>>> list4[0]['name']='wuxianfeng'
>>> list4
[{'name': 'wuxianfeng'}, {'name': 'wuxianfeng'}, {'name': 'wuxianfeng'}, {'name': 'wuxianfeng'}]
拓展
如果你要创建一个包含多个同款可变对象的列表
正确的姿势可以是这样的
>>> list2 = [[] for _ in range(3)]
>>> list2[0].append(1)
>>> list2
[[1], [], []]
Python常见面试题013.请说出下面的代码返回结果是什么?的更多相关文章
- 整理的最全 python常见面试题(基本必考)
整理的最全 python常见面试题(基本必考) python 2018-05-17 作者 大蛇王 1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in ...
- 整理的最全 python常见面试题
整理的最全 python常见面试题(基本必考)① ②③④⑤⑥⑦⑧⑨⑩ 1.大数据的文件读取: ① 利用生成器generator: ②迭代器进行迭代遍历:for line in file; 2.迭代 ...
- Python常见面试题
Q 1:Python 有哪些特点和优点? 作为一门编程入门语言,Python 主要有以下特点和优点: ● 可解释● 具有动态特性● 面向对象● 简明简单● 开源● 具有强大的社区支持当然,实际上 Py ...
- python常见面试题(三)
问题1 到底什么是Python?你可以在回答中与其他技术进行对比(也鼓励这样做). 答案 下面是一些关键点: Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,Python代码在运行 ...
- python常见面试题(一)
1.Python是如何进行内存管理的? 答:从三个方面来说,一对象的引用计数机制,二垃圾回收机制,三内存池机制 一.对象的引用计数机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都 ...
- python常见面试题(mark)
1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in file 2.迭代器和生成器的区别 1)迭代器是一个更抽象的概念,任何对象,如果它的类有next方 ...
- python常见面试题(二)
1. 到底什么是Python?你可以在回答中与其他技术进行对比(也鼓励这样做). 下面是一些关键点: Python是一种解释型语言.这就是说,与C语言和C的衍生语言不同,Python代码在运行之前不需 ...
- 315道Python常见面试题
第一部分,Python基础篇 为什么学习Python? 通过什么途径学习的Python? Python和Java.PHP.C.C#.C++等其他语言的对比? 简述解释型和编译型编程语言? Python ...
- 【python常见面试题】之python 中对list去重的多种方法
在python相关职位的面试过程中,会对列表list的去重进行考察.(注意有时会要求保证去重的顺序性) 1.直观方法 li=[1,2,3,4,5,1,2,3] new_li=[] for i in l ...
- 10道Python常见面试题
1.MySQL索引种类 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 2.索引在什么情况下遵循最左前缀的规则? 最左前缀原理的一部分,索引index1:(a,b,c),只会走a ...
随机推荐
- MySQL 打开慢查询 主从同步状态
MySql 打开慢查询 set global log_output='FILE'; SET GLOBAL slow_query_log = ON; SET GLOBAL long_query_time ...
- 简单的WPF客户端应用开发
1.使用vs创建一个新项目,选择wpf应用 2.创建好项目,在视图=>工具箱,选择要使用的部件 3.单击部件可以改变部件的显示信息,即content的内容就是显示的信息,name为部件的名称,在 ...
- 实验: spring-boot 整合 fluent-mybatis 实验过程!!!!
1.参考: 简单整合,会报错误 https://segmentfault.com/a/1190000040467885?utm_source=sf-similar-article 利用maven编译, ...
- SpringBoot - 参数校验、统一异常、统一响应
转载自: https://blog.csdn.net/chaitoudaren/article/details/105610962 前言 本篇主要要介绍的就是controller层的处理,一个完整的后 ...
- js基础篇--对象
一.创建对象 对象直接量和 new Object (构造函数)与 Object.create 创建对象的区别 1.对象直接量和 new Object (构造函数) 原型都是Object 的 pro ...
- linux执行某个文件夹下的所有sql文件
一个目录下有多个sql文件,hive需要执行该目录下的每个文件 #!/bin/bash dir=$(ls -l /app/test_warehouse/git/azkaban/test_shrimp/ ...
- Epoll的使用例子
本篇文章在上一篇的基础上,使用 epoll 实现了一个事件监听和回调处理的模块.如何编写一个使用该模块的例子呢? 监测什么类型的fd,监测什么类型的事件,监测到事件以后需要做什么?后来可以看看如何将 ...
- windows 10 的VMware workstation Pro突然变成英文界面
电脑的VMware虚拟机界面是中文版的,后来在捣弄些电脑配置,突然变成英文版界面了. 后面发现原来是区域格式选错了:正确的格式是下图红框
- 使用fontmin,压缩字体文件,从十几M到几kb,只选择需要使用的文字
字体文件压缩fontmin,大幅压缩字体文件 快速熟练fontmin的使用,只需要在代码中配置文章中需要用到的文字,可以大幅度缩减代码大小 安装 npm install fontmin 目录结构 sr ...
- Java 方法详解 与数组
基础阶段: 1.何谓方法 何谓方法?◆System.out.println(),那么它是什么呢?◆Java方法是语句的集合,它们在- -起执行一个功能. ◆方法是解决一类问题的步骤的有序组合 ...