python中ht表示什么_如何看待某国内大公司Python面试题,有关dict中初始化为固定值?...

职业发展

Python

如何看待某国内大公司Python面试题,有关dict中初始化为固定值?

阅读下面的代码,写出A0,A1至A6的最终值。

A0 = dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))

A1 = range(10)

A2 = [i for i in A1 if i in A0]

A3 = [A0[s] for s in A0]

A4 = [i for i in A1 if i in A3]

A5 = {i:i*i for i in A1}

A6 = [[i,i*i] for i in A1]

答案在这里:

A0 = {'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}

A1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

A2 = []

A3 = [1, 3, 2, 5, 4]

A4 = [1, 2, 3, 4, 5]

A5 = {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}

A6 = [[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]

请给出为什么A3= [1, 3, 2, 5, 4] 的理由,即A0初始化为什么为固定值

HTLiu     1502017-05-19 00:02:13

这个是根据Python2.X的dict的源码来实现的, 主要是 PyDict_SetItem()这个函数, 在字典里面添加一个项的步骤是,先对key求hash值,之后hash值与掩码mask做&操作,得到哈希表中空位置(slot),如果该位置未被占用,那key的槽就是它了,否则根据 开放定址 继续寻找。 因此输出的key的顺序就是在哈希表中的顺序,为什么是13254的原因如下:ln [16]: hash('a') & 7

Out[16]: 0

In [18]: hash('b') & 7

Out[18]: 3

In [19]: hash('c') & 7

Out[19]: 2

In [20]: hash('d') & 7

Out[20]: 5

In [21]: hash('e') & 7

Out[21]: 4

按照在哈希表中的顺序就是: acbed, 对应到题目就是13254.

ps: 为什么&7 是因为初始默认大小是8:#define PyDict_MINSIZE 8 ,

掩码mask=size-1,即:8-1 = 7.

如果元素个数超过了当前size的 2/3了,就会重新扩展。

苏兆君     22017-05-19 15:35:26

python2的结果:{'a': 1, 'c': 3, 'b': 2, 'e': 5, 'd': 4}

python3的结果:{'a': 1, 'd': 4, 'e': 5, 'b': 2, 'c': 3}

我就很讷闷了,招这样的人是来写Python解释器的还是写Python项目的。出题的人不去考Python库的知识面,来考数据在Python在解释器中的生成规则,就像你做饭不去考虑怎样去做熟它,而是去考虑这些米施了多少肥才长这么饱满。

HTLiu     12017-05-19 17:21:55

哈哈 原来是钓鱼贴

Qing Meng     12017-05-19 15:27:02

我win10+Python 3.6.0以及ubuntu 1604+Python 3.5.2上都测试hash('a'),hash('b')的结果,每次都不一样,不知道为什么。

HTLiu     12017-05-19 14:41:13

就是对哈希表resize, 然后将旧表数据复制到新表, 再对元素进行hash。

Qing Meng     02017-05-21 14:55:46

这个不太理解。'a'这个字符字面量在python中的表示跟content为'a'的字符串对象不一样吗?

安澜     02017-05-21 13:39:52

要注意你是对"a"这个字符hash还是content为"a"的字符串对象hash

王浩淼     02017-05-19 20:08:47

牛逼,学习了,感谢

刘顺裕     02017-05-19 16:09:17

其实我有答案,您的答案是我期望得到的,我也是翻阅了文档查看了dict源码和默认设置

Qing Meng     02017-05-19 15:51:43

谢谢解答!

HTLiu     02017-05-19 15:47:01

哈哈,的确是。python对dict的优化每个版本都有不一样的,据说python3.6对dict又是一次大改动,性能提高了不少。 不过在python2.x dict已经固定了,只是小改小闹。 python3.x 变化较大。

HTLiu     02017-05-19 15:42:52

上述的所有均是基于 Python 2.X, 开头也声明了。 Python3.X的dict 机制有很大不一样。甚至python3.6和python3.5 都变化很大,具体python3.x 没有研究过。 因为python的很多对象均是靠字典来维护的,因此每一个大版本都会对dict 做优化。

HTLiu     02017-05-19 14:46:00

不会吧, 我在双系统(win 10, ubuntu 1604) 均测试了三种情况都是, acbed, 有截图复现吗

知乎用户     02017-05-19 14:40:06

感激,学习了!

王奕岚     02017-05-19 14:22:43

学习了!请问扩展机制是什么?

codog     02017-05-19 14:21:02

我在pycharm上执行结果完全随机的,在ipython下执行是12345,在cmd下执行才有13254的结果,都是一个python解释器(版本2.7.12),为何?

HTLiu     02017-05-19 08:08:02

应该是一样的。我记得python源码中采取的hash函数是一种比较常规的hash算法,是固定的。此外我也测试了同一系统下不同的python进程得到的hash值是一样的呀。如果32位/64位的机器或许会不一样。

知乎用户     02017-05-19 08:03:14

谢谢

Qing Meng     02017-05-19 01:03:14

谢谢,学习了

有个问题,每次启动python解释器,都能够保证一个字符串(例如'a')的hash值相同的吗?

不同python解释器进程,built-in的hash()函数似乎对同一个字符串的hash结果不一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/499085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

defaultdict python_在python中怎样使用defaultdict-百度经验

defaultdict是collection模块下面的一个类,用于在执行字典的时候,遇到没有设置的属性的时候,可以设置默认的值,那么在python中怎样使用defaultdict呢?下面小编就带大家来看看详细的教程!工具/原料 python版…

微型计算机除具有计算机的一般特点外,10秋学期《计算机应用基础》第1次在线作业答案免费6/15...

10秋学期《计算机应用基础》第1次在线作业答案免费6/152011-02-17 00:02:57266有学员问关于10秋学期《计算机应用基础》第1次在线作业答案免费6/15的题目的参考答案和解析,具体如下:2010秋学期《计算机应用基础》第一次在线作业试卷总分:100 …

设计几何体素描_石膏几何体素描教案

1石膏几何体素描教案教学目的:1、知识能力目标:通过教学使学生懂得写实素描、石膏几何体写生的意义,为上好其他绘画专业课奠定造型基础。2、方法与过程目标:掌握写生的观察方法、透视规律、作画步骤。3、情感态度价值目标&#xf…

java面试换背景颜色_三年经验Java程序员记一次失败的面试分享:鹅厂三面让我体无完肤!...

欢迎关注专栏:里面定期分享Java架构技术知识点及解析,还会不断更新的BATJ面试专题,欢迎大家前来探讨交流,如有好的文章也欢迎投稿。程序员圈内那点事​zhuanlan.zhihu.com经过半年的沉淀,加上对MySQL,redis…

福昕风腾pdf导出为html,福昕风腾PDF套件快速指引.pdf

福昕风腾PDF套件快速指引福昕风腾PDF 套件 快速指南1福昕风腾PDF 套件 快速指南福昕风腾PDF 套件 快速指南本文简要介绍了福昕风腾 PDF 套件的主要功能。如需详细的操作帮助,请参看我们的用户手册。使用入门安装福昕风腾PDF 套件(福昕风腾PDF 电子文档处理套件)系统…

12x12怎么速算_备考 | 资料分析中的乘法速算怎么做?

资料分析是考生们在学习职测必须要作为重点的一个部分。难度不是特别大,但是技巧性比较强。资料分析其中一个重难点就是计算,而在计算中比较复杂的列式一定包含乘除运算。对于其中的乘法,考生们往往束手无策,只能采取硬算的方式。…

商城报表系统html5,关于html5:推荐这几款主流报表产品

为什么大家当初放弃应用Excel,而抉择第三方报表工具呢?Excel是一个电子表格程序,而不是一个数据库程序。Excel数据处理容量和速度有限度,数据可视化水平不高,都是以表格为主,尽管也能插入一些图表&#xff…

git 获取最新代码_github从远程仓库获取

前面我们说明了如何将本地的代码push到远程的仓库中,现在我们将学习从远程仓库上的获取代码到本地。1,建立一个新的文件夹,以从远端获取完整的git项目命令1:git clone https://github.com/huangguojie880/git-demo.git2&#xff0…

layui导出html到pdf,layui打印html页面转成pdf

Documentfunctionpreview(oper){if(oper< 10){bdhtmlwindow.document.body.innerHTML;//获取当前页的html代码sprnstr"";//设置打印开始区域eprnstr"";//设置打印结束区域prnhtmlbdhtml.substring(bdhtml.indexOf(sprnstr)18);//从开始代码向后取htmlpr…

golang 远程批量执行shell_S2061远程代码执行漏洞复现及批量检测脚本(CVE202017530)...

声明由于传播、利用此文所提供的信息或工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;博鸿科技安全服务中心以及文章作者不为此承担任何责任。博鸿科技安全服务中心拥有对此文章的修改和解释权。如欲转载或传播此文章&#xff0c;必须保…

准备学python用什么电脑_001-小白学python-初入python世界

计算机组成原理硬件 主机 cpu中央处理器 &#xff08;运算器与控制器&#xff09; 内存&#xff08;只读&#xff0c;随机&#xff09;外设 输入设备&#xff08;键盘&#xff0c;鼠标&#xff0c;录影&#xff08;音&#xff09;机&#xff09; 输出设备&#xff08;屏幕&…

html 添加窗口小部件,如何:为自定义窗口小部件定义主题(样式)项

波斯汪是的&#xff0c;有一种方法&#xff1a;假设您有一个小部件的属性声明(在中attrs.xml)&#xff1a; 声明用于样式参考的属性(在中attrs.xml)&#xff1a; 为小部件声明一组默认属性值(在中styles.xml)&#xff1a;声明自定义主题(在中themes.xml)&#xff1a;将此…

excel帮助文档_可以惊艳到你的6个excel基础技巧

Excel技巧太多&#xff0c;也许我们一直都在学习的路上&#xff0c;每天掌握一点点&#xff0c;工作轻松一点点&#xff0c;今天给大家带来6个excel经常会用到的技巧&#xff0c;操作简单&#xff0c;非常实用。技巧一&#xff1a;给excel文件添加打开密码第一步&#xff0c;很…

python find 不区分大小写_学好python拿高薪系列一(5):字符串操作和python数据结构...

大家好&#xff0c;上一期我们分享了python函数部分的内容&#xff0c;那么在这一期我们将分享python中有关字符串和列表的部分。字符串字符串没有什么好说的&#xff0c;知道一些常用的用法就行了。#字符串操作strr "hello,world!"#1、获取字符串长度print(len(strr…

for里面调用方法 vue_Vue源码阅读连载之Vue实例

我们学习Vue都是从下面这个例子开始的new Vue({render: h > h(App), }).$mount(#app)事实上&#xff0c;所有的Vue项目的组成组件都是一个Vue的实例&#xff0c;最后由根部的Vue实例去挂载到DOM上&#xff0c;当然这个"挂载"的操作可以针对不同的平台而有不同的行…

计算机组装怎么备份系统,手把手教你用GHOST备份还原安装电脑系统详细图文教程...

首先我们可以利用之前安装系统时提到的带启动功能和工具的系统安装盘&#xff0c;比如98启动盘或番茄花园的光盘&#xff0c;如果你用的U盘上带有GHOST工具&#xff0c;那很简单&#xff0c;我们还是要设置由光驱为第一启动项&#xff0c;重新启动电脑让电脑由光驱启动&#xf…

python车牌识别系统开源代码_python利用百度云接口实现车牌识别的示例

一个小需求---实现车牌识别。 目前有两个想法 1. 调云在线的接口或者使用SDK做开发&#xff08;配置环境和编译第三方库很麻烦&#xff0c;当然使用python可以避免这些问题&#xff09; 2. 自己实现车牌识别算法&#xff08;复杂&#xff09; 一开始准备使用百度云文字识别C SD…

c 包含其他文件_C/C++编程笔记:C/C++的编译和链接,计算机专业大学生必备知识...

C/C文件C/C程序文件包括 .h .c .hpp .cpp&#xff0c;其中源文件(.c .cpp)是基本的编译单元&#xff0c;头文件(.h .hpp)不会被编译器编译。C/C项目构建(build)过程&#xff0c;分为以下几个步骤 预处理 → 编译 → 链接。预编译预编译的过程可以理解为编译器(实际上是预处理器…

中科大计算机学院博士导师,中科大计算机学院招生导师

这是我2011年参加中科大研究生推免时中科大给发的导师名册自然计算理论及方法教师陈小平 (教授) 陈恩红 (教授) 岳丽华 (教授)联系方式电 话&#xff1a;3606724(O)Email:xpchenhttp://doc.xuehai.net 电 话&#xff1a;3601558(O)Email:chenehhttp://doc.xuehai.net研究方向Ag…

python函数命名空间_Python中的函数 ​命名空间 作用域和局部函数 匿名(lambda)函数...

函数 是 Python中最重要的代码组织和复用手段函数用def关键字声明&#xff0c;return关键字返回&#xff1a; def function(x, y, z1.5): if z > 1: return z * (x y) else: return z / (x y) ##可以拥有多条return语句&#xff0c;如果到达函数末尾时没有遇到任何一条ret…