好吧,你的一些困惑是,你正在阅读的博客文章是错的。关于多件事。试着忘记你曾经读过它(除了记住网站和作者的名字,以便你以后知道如何避免它们。)

确实,元组是可以清除的,列表不是,但这与它们的相等测试功能无关。并且它确实不正确#34;它只是比较哈希值,它知道它们是否相等!"哈希碰撞发生,忽略它们会导致可怕的错误,幸运的是,Python的开发人员并不是那么愚蠢。事实上,Python在初始化时计算哈希值是不正确的。*

实际上是元组和列表之间的一个显着差异(在CPython中,从3.6开始),但它通常没有太大区别:列表对不等长度进行额外检查作为优化的开始,但同样的检查结果是元组的悲观,**所以它从那里被删除。

另一个,通常更为重要的区别是,源中的元组文字被编译为常量值,同一元组文字的单独副本被折叠到同一个常量对象中;由于显而易见的原因,列表不会发生这种情况。

事实上,这就是您使用timeit进行真正测试的内容。在我的笔记本电脑上,比较元组需要95ns,而比较列表需要169ns - 但是将其分解,实际上比较为93ns,另外还有38ns来创建每个列表。为了使其公平比较,您必须将创建移动到设置步骤,然后比较循环内已存在的值。 (或者,当然,你可能不希望公平 - 你发现了一个有用的事实,即你每次使用元组常量而不是创建一个新列表时,你都会这样做节省了相当大的一微秒。)

除此之外,他们基本上做同样的事情。将the C source转换为类似Python的伪代码(并删除所有错误处理,以及使<使相同功能起作用的内容,等等):

for i in range(min(len(v), len(w))):

if v[i] != w[i]:

break

else:

return len(v) == len(w)

return False

if len(v) != len(w):

return False

for i in range(min(len(v), len(w))):

if v[i] != w[i]:

break

else:

return True

return False

*事实上,与字符串不同,元组甚至不会缓存它们的哈希值;如果你反复拨打hash,它会继续重新计算它。请参阅issue 9685,其中一个要更改的修补程序被拒绝,因为它减慢了某些基准测试并且没有加速任何人都能找到的任何内容。

**不是因为实现有任何固有的东西,而是因为人们经常比较不同长度的列表,但很少使用元组。

python连等号_Python比较2列表和2元组用等号相关推荐

  1. python元祖用法_Python序列(列表list和元组tuple)用法完全攻略

    所谓序列,指的是一种包含多项数据的数据结构,序列包含的多个数据项(也叫成员)按顺序排列,可通过索引来访问成员. Python 的常见序列类型包括字符串.列表和元组.前一章介绍过的字符串,其实就是一种常 ...

  2. python序列数据类型_python 数据类型 序列——列表

    python 数据类型 序列--列表 浏览次数: 发布时间:2015-08-21 11:38 python 数据类型 序列--列表 **列表** list是处理一组有序项目的数据结构,即你可以在一个列 ...

  3. python核心数据类型_Python核心数据类型-列表

    Python核心数据类型-列表 关于列表的重要属性 列表是任意对象的有序集合,列表中可以包含任何种类的对象,数字 字符串 或者是其他列表 列表可以通过偏移来读取其中的元素,也可以通过分片读取列表中的某 ...

  4. python 生成器表达式_Python中的列表理解与生成器表达式

    python 生成器表达式 The list is a collection of different types of elements and there are many ways of cre ...

  5. python字符串排序_Python对字符串列表进行排序

    在本教程中,我们将看到如何对字符串列表进行排序.我们将使用sort方法和sorted函数对给定的字符串列表进行排序.然后,我们将了解如何根据不同的条件(例如长度,值等)对字符串列表进行排序, 让我们看 ...

  6. python交并补_python两个列表求交、并、差

    在python中,如果有两个数组,分别要求交集,并集与差集,怎么实现比较方便呢? 当然最容易想到的是对两个数组做循环,即写两个for循环来实现.这种写法大部分同学应该都会,而且也没有太多的技术含量,下 ...

  7. python菜单函数_Python 自学笔记- 列表及其内置函数

    0. 列表都可以存放一些什么东西? 我们可以说Python 的列表是一个打了激素的数组,如果把数组比喻成集装箱,那么 Python 的列表就是一个大仓库,Ta 可以存放我们已经学习过的任何数据类型. ...

  8. python表格对齐_python 格式化输出 列表对齐左对齐右对齐

    原博文 2020-10-14 09:30 − python对齐输出 https://www.cnblogs.com/nul1/p/11136495.html python - 输出列表自动对齐(支持中 ...

  9. python 路由转发_python 洋葱路由列表创建

    scapy 生成动态路由轨迹图 scapy模板需要tcpdump程序支持,生成报表需要graphviz.ImageMagick图像处理包支持 scapy(http://www.secdev.org/p ...

最新文章

  1. OpenCV中使用模板匹配识别空闲的货架空间
  2. android 在 ListView 的 item 中插入 GridView 仿微信朋友圈图片显示。
  3. python中可以用中文作为变量-Python中用中文变量名、函数名,会影响性能吗?
  4. SOAP 及其安全控制--转载
  5. 【Linux独家秘方】Linux 定时备份oracle库的数据
  6. Ubuntu 12.04 安装g++ arm交叉编译环境
  7. cc2530dma控制器功能_CC2530常用的控制寄存器
  8. 敏捷开发回顾:使团队更强大pdf
  9. [国家集训队] tree Ⅱ
  10. apscheduler -定时任务
  11. python默认深拷贝_Python 深拷贝与浅拷贝
  12. matlab中count是干什么,matlab编程潮流计算的count值与什么有?
  13. 服务器消息不是按顺序来的,消息队列之 RocketMQ(示例代码)
  14. 2019 Go 开发者路线图,请收下这份指南!
  15. leetcode 456. 132 Pattern 132模式 题解(栈)
  16. c/c++游戏编程之Easyx图形库基础
  17. redis之AOF和RDB持久化
  18. chrome 91版本 解决跨域请求SameSite
  19. 什么是量子安全?量子计算时代下的基本安全技术
  20. hbase数据库_hbase数据库 修改数据

热门文章

  1. 情感分析算法从原理到PaddlePaddle实战全解
  2. 【转载保存】ThreadPoolExecutor类使用详解
  3. Maven报错Missing artifact jdk.tools:jdk.tools:jar:1.7
  4. 【转载保存】hadoop学习之wordcount运行错误处理
  5. 语音识别学习日志 2019-7-17 语音识别基础知识准备6 {维特比算法(Viterbi Algorithm)}
  6. OpenTSDB 安装
  7. Failed to connect to 127.0.0.1 port 1080: Connection refused package:git
  8. 阿里云数据中台助力零售耐消品新客获取与转化
  9. 【数据湖加速篇】 —— 如何利用缓存加速服务来提升数据湖上机器学习训练速度
  10. 深度解读OpenYurt:从边缘自治看YurtHub的扩展能力