我是一名网络工程师,尝试将Python编程学习为一项工作要求。Python变量赋值更改值
我写了下面
#Funtion此代码砍第一和最后一个项目在列表中
def chop(t):
t.pop(0) and t.pop(len(t)-1)
return t
当我运行就行了t时的功能,并将其分配给一个变量一个。 a在函数执行后得到列表的其余部分,并且a成为一个新列表。这是完美的。
>>> t = ['a', 'b', 'c', 'd', 'e' ,'f','g','h','i','j','k','l']
>>> a=chop(t)
>>> a
['b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']
>>>
后来当我尝试它工作得很好,但是a的值也变为打印印章(t)的输出,而我没有通过函数印章(t)的运行变量。有人能解释为什么会发生这种情况?
>>> print chop(t)
['c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
>>> a
['c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']
问候 Umesh制作
你不复制你的列表,所以'a'和't'指向同一个列表。如果你改变一个,他们都被改变了。 – khelwood
你可能会发现这篇文章有用:[关于Python名称和值的事实和神话](http://nedbatchelder.com/text/names.html),这是由SO老将Ned Batchelder编写的。另请参阅[其他语言具有“变量”,Python具有“名称”](http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#other-languages-have-variables)简短的总结与好的图表。 –
你应该看看这个SO [文章](http://stackoverflow.com/questions/2612802/how-to-clone-or-copy-a-list) – latsha