美文网首页
[[]]*3 和 [[],[],[]]有区别吗?

[[]]*3 和 [[],[],[]]有区别吗?

作者: 大象信步走来 | 来源:发表于2020-06-26 21:07 被阅读0次

肯定有,没有,我长那么帅干嘛!---- 鸣人鸣言

print([[]]*3)                 # [[],[],[]]
print([[]]*3 == [[],[],[]]) # True

由代码可以看出,二者的值是相等的。但是我们知道值相等并不代表二者等价。下面两段代码比较出了二者的不同。

代码1:

lists1 = [[],[],[]]
print(lists1)        # [[],[],[]]
lists1[0].append(3)
print(lists1)        # [[3],[],[]]

代码2

lists2 = [[]]*3
print(lists2)        # [[],[],[]]
lists2[0].append(3)
print(lists2)        # [[3],[3],[3]]

二者的不同的原因在于:

[[]] 是一个包含了一个空列表的单元素列表,所以 [[]] * 3 结果中的三个元素都是对这一个空列表的引用。 修改 lists 中的任何一个元素实际上都是对这一个空列表的修改。

也就是说:[[]]* 3结果中的三个元素都引用同一个内存地址,这个内存地址上的值(value)变了,大家跟着都变。而[[],[],[]]中的每个元素各自引用一个内存地址,其中一个值给变并不影响另外两个。

print([[]]*3 is [[],[],[]]) # False

提示:is是比较对象的id,而==比较对象的值。

相关文章

  • [[]]*3 和 [[],[],[]]有区别吗?

    肯定有,没有,我长那么帅干嘛!---- 鸣人鸣言 由代码可以看出,二者的值是相等的。但是我们知道值相等并不代表二者...

  • 悲伤逆流成河

    “疼痛,是疼还是痛,有区别吗? 心疼和心痛,有区别吗?” ——《...

  • 数组

    数组a[++i}和数组a[i++]有区别吗?有区别,举例说明:a[3]={1,2,3};i=1;那么 a[++i]...

  • 2021-07-27

    有区别吗 真的有区别吗 我猜不猜得到有区别吗 有什么区别 我说不说出来有区别吗 有什么区别 你有改变什么吗 有什么...

  • 你的所谓成熟,不过是精神早衰

    看脸能看出月薪?月薪3千的脸和月薪3万的脸有区别吗? 是的,真的有区别。 而且长着“有钱人的脸”的人在找工作时比长...

  • 我就是试试看

    和以前的博客有什么区别吗?

  • Java List面试题汇总

    1、你知道的List都有哪些? 2、List和Vector有什么区别? 3、List是有序的吗? 4、ArrayL...

  • 美国海运FBA跟普通海运有区别吗?

    美国海运FBA跟普通海运有区别吗?区别在哪,美国FBA海运是比较常见的运输方式,那么它和普通海运有区别吗,让大森林...

  • 2019-02-28面试情况记录(待补充)

    1.@ RestController和@Controller的区别。 2.#{}和${}获取有什么区别。 3.前端...

  • 信仰和迷信有区别吗

    吴伯凡老师在他的得到专栏,认知方法论中讲了这么一个帖子有人提了两个问题是什么让女生相信按摩可以丰胸,然后同样按摩可...

网友评论

      本文标题:[[]]*3 和 [[],[],[]]有区别吗?

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