资讯专栏INFORMATION COLUMN

Python中操作符“*”创建数组与循环创建数组的区别

VishKozus / 446人阅读

摘要:起因注以下操作使用的版本为今天在写基数排序的时候,由于需要创建一个的的,所以我使用了如下方法创建随后,我在往桶里面存放数据的时候结果显示结果不符合我的预期,于是用查看对象的引用后发现该里面的果然都是同一个解决办法随后改用如下方法创建并存放

0x00 起因

注: 以下操作使用的Python版本为:Python 3.7.3
今天在写基数排序的时候,由于需要创建一个0-9的bucket的list,所以我使用了如下方法创建:

bucket = [[]] * 10

随后,我在往桶里面存放数据的时候:

bucket[3].append(3)

结果显示:

结果不符合我的预期,于是用id查看对象的引用后:


发现该list里面的list果然都是同一个!

0x01 解决办法

随后改用如下方法创建,并存放数据:

bucket = [ [] for x in range(10)]
bucket[3].append(3)

得到的结果就符合预期了,可以看到对象的引用不一样

0x02 小结

查看官方文档,原来对于mul操作符有说明,如下图所示


使用"*"操作符是反馈 b个数的a,在同一个list中的所以list的引用都是一样了
而使用[ [] for x in range(10) ]则相当于使用循环:

bucket = []
for x in range(10):
    bucket.append([])

自然bucket中的每个list都是不同的对象
得出的结论:我们在批量创建引用对象时,不要使用Multi operator!!!

0x03 References

Python multi operator

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/43833.html

相关文章

  • 真假美猴王-Numpy数据Python数组区别联系

    摘要:下文统一称为数组是存储单一数据类型的多维数组同语言数组直接保存数值而则是能够对数组进行处理的函数。动态数据类型与的数组和的这些不可变数据类型的适用场景等可变数据类型适用于需要不断对原始数据进行修改的场景。 showImg(https://segmentfault.com/img/remote/1460000018925396);Numpy,是python中的一个矩阵计算包,功能类似ma...

    邹强 评论0 收藏0
  • NumPyPython内置列表计算标准差区别详析

      小编写这篇文章的主要目的,主要是给大家进行介绍,关于NumPy与Python内置列表计算标准差区别的相关介绍,希望可以给各位读者带来帮助。  1什么是Numpy  NumPy,是NumericalPython的通称,用以性能卓越计算机的应用和数据统计分析的前提包,像数理科学专用工具(pandas)和架构(Scikit-learn)中都采用上了NumPy这个包。  NumPy中的基本数据结构是n...

    89542767 评论0 收藏0
  • 《十万字Java入门练习100例》1-10例——纸上得来终觉浅,绝知此事要躬行

    摘要:代码实现在控制台打印总结本篇文章带大家搭好环境,并体验了控制台打印。输出结果总结熟练掌握取余和整除运算,大有作用。终止本次循环,继续执行下一次循环。 ?本文收录...

    keithyau 评论0 收藏0
  • Python语法速览机器学习开发环境搭建

    摘要:语法速览与机器学习开发环境搭建从属于笔者的程序猿的数据科学与机器学习实战手册,如果希望了解更多关于数据科学与机器学习知识体系结构,推荐阅读我的技术体系结构图面向程序猿的数据科学与机器学习知识体系及资料合集。 Python语法速览与机器学习开发环境搭建从属于笔者的程序猿的数据科学与机器学习实战手册,如果希望了解更多关于数据科学与机器学习知识体系结构,推荐阅读2016:我的技术体系结构图:...

    Simon 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<