请在此处查看此列表:
example=[]
另一个:
python=["hi","bye","hello","yes","no"]
如果我决定将python中的一个元素添加到example中,那么将创建该元素的副本b,或者变量python是否会丢失元素。
example+=[python[0]]
因此,使用上述示例
将字符串“hi”复制或转移到示例答案 0 :(得分:2)
当您执行example
example+=python[0]
因此,example
在这种情况下将包含['h','i']
。
此外,列表python
不会丢失元素。
答案 1 :(得分:1)
不,不会有“转移”。只需在操作后打印值即可轻松检查。
相反,列表示例将附加第一个字符串的元素:
>>> f = []
>>> f+= ["hi", "there"][0]
>>> f
['h', 'i']
这是因为a += b
在概念上*等同于a = a+b
,a+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'并复制到示例