为什么Python要扩展输出[…]
我的讲师提出了几个关于python的问题,这个问题让我感到困惑,我不明白发生了什么为什么Python要扩展输出[…],python,list,python-3.x,Python,List,Python 3.x,我的讲师提出了几个关于python的问题,这个问题让我感到困惑,我不明白发生了什么 x = [[]] x[0].extend(x) Python告诉我,在运行这个命令之后,x是[[…]],那么..是什么意思 当以下结果只是[[]] y = [] # equivalent to x[0] x = [[]] y.extend(x) 如果y被计算为[[]]那么x不应该被计算为仅仅是[[[]] 你在干什么?..是什么意思?这个..表示列表包含一个递归循环,也就是说,在某种程度上,某个东西包含了它自己
x = [[]]
x[0].extend(x)
Python告诉我,在运行这个命令之后,x是[[…]]
,那么..
是什么意思
当以下结果只是[[]]
y = [] # equivalent to x[0]
x = [[]]
y.extend(x)
如果y
被计算为[[]]
那么x
不应该被计算为仅仅是[[[]]
你在干什么?
..
是什么意思?这个..
表示列表包含一个递归循环,也就是说,在某种程度上,某个东西包含了它自己。这是因为您使用x
扩展了x
,因此本质上是将x
放在其内部
第二个示例中没有
…
,因为y
是一个不同的对象。虽然它恰好等于x[0]
,因为两者都是空列表,但它们不是相同的空列表。因此,通过使用x
扩展x[0]
,它在x[0]
处创建对x
的引用,而不是将x
包含的数据复制到x[0]
?是吗?@CGA1123:基本上是的。(更具体地说,它是在x[0]
的列表中创建对x[0]
的引用,因为extend
添加的是它的参数的内容,而不是参数本身。但您是对的,它是在创建对同一对象的引用,而不是复制数据,这是关键。)因为x
引用自身,str(x)
是一个无限循环。蟒蛇捕捉到它真是太好了。