在python中,如果我将列表的一部分添加到另一个列表中,列表的长度会减少吗?

时间:2013-07-29 17:45:20

标签: python python-3.x

请在此处查看此列表:

example=[]  

另一个:

python=["hi","bye","hello","yes","no"]

如果我决定将python中的一个元素添加到example中,那么将创建该元素的副本b,或者变量python是否会丢失元素。

example+=[python[0]]

因此,使用上述示例

将字符串“hi”复制或转移到示例

5 个答案:

答案 0 :(得分:2)

当您执行example

时,字符串“hi”将拆分为字符并分配给example+=python[0]

因此,example在这种情况下将包含['h','i']

此外,列表python不会丢失元素。

答案 1 :(得分:1)

不,不会有“转移”。只需在操作后打印值即可轻松检查。

相反,列表示例将附加第一个字符串的元素:

>>> f = []
>>> f+= ["hi", "there"][0]
>>> f
['h', 'i']

这是因为a += b在概念上*等同于a = a+ba+b创建了一个列表,其中包含a的所有元素,后跟{{1}的元素}}。字符串是序列,其元素是由单个字符组成的字符串,这就是您获得此行为的原因。

b存在差异,尤其是*无效。

答案 2 :(得分:0)

  
    

那么字符串“hi”会被复制还是转移?

  

不,字符串"hi"既不会重复也不会被转移。相反,绑定example的对象的长度将增加1,并且引用example[0]将绑定到绑定的任何对象python[0]。此外,引用python和绑定它的对象都不会被修改。

另请注意,您的问题在示例中有错误。你实际说过的地方,

example += python[0]

你肯定会说:

example += [python[0]]

答案 3 :(得分:0)

Python列表仅存储对元素的引用。元素(这里是字符串)存储为外部对象。

任何Python分配仅复制参考值。这样,列表就可以实现为存储引用的动态数组。

如果将字符串插入列表,则不会复制源字符串对象,只会复制对同一对象的引用。在分配的右侧使用时,源元素(此处为python[0])不会从列表python中删除。它只是阅读并保持不变。

答案 4 :(得分:-2)

您必须执行以下操作 example.append(蟒[0] 这将采用'hi'并复制到示例