美文网首页大数据 爬虫Python AI SqlPython学习互联网科技
Python中操作符“*”创建数组与循环创建数组的区别

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

作者: 919b0c54458f | 来源:发表于2019-05-18 16:06 被阅读19次

    起因

    注: 以下操作使用的Python版本为:Python 3.7.3

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

    bucket = [[]] * 10
    
    

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

    bucket[3].append(3)
    
    

    结果显示:

    image

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

    image

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

    解决办法

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

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

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

    image

    小结

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

    image

    使用"*"操作符是反馈 b个数的a,在同一个list中的所以list的引用都是一样了

    而使用 [ [] for x in range(10) ] 则相当于使用循环:

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

    自然bucket中的每个list都是不同的对象

    得出的结论:我们在批量创建引用对象时,不要使用Multi operator!!!

    如果你对Python编程感兴趣,那么记得来小编的Python学习扣群:556370268,这里有资源共享,技术解答,大家可以在一起交流Python编程经验,还有小编整理的一份Python学习教程,希望能帮助大家更好的学习python。

    image

    相关文章

      网友评论

        本文标题:Python中操作符“*”创建数组与循环创建数组的区别

        本文链接:https://www.haomeiwen.com/subject/iiutzqtx.html