当前位置:  开发笔记 > 编程语言 > 正文

为什么python中的列表以这种方式运行?

如何解决《为什么python中的列表以这种方式运行?》经验,为你挑选了1个好方法。

如果我有以下功能和代码:

def do_something(a, b):
    a.insert(0, ’z’)
    b = [’z’] + b
a = [’a’, ’b’, ’c’]
a1 = a
a2 = a[:]
b = [’a’, ’b’, ’c’]
b1 = b
b2 = b[:]
do_something(a, b)

为什么print(a)屈服['z','a','b','c'],但打印b仍然只打印['a','b','c']

在我所做的功能中b = b + ['z']也不z应该在列表中?

另外为什么打印a[:]不打印新列表['z','a','b','c']并打印旧列表['a','b','c']呢?



1> Eric Renouf..:

因为do_something您正在修改具有标签的列表,a但您正在创建新列表并将其重新分配给标签b,而不是使用标签修改列表b

这意味着名单之外do_somethinga已被更改,但不是b一个,因为你只是巧合使用FUNC内相同的名字,你也可以做喜欢用不同的名称FUNC同样的事情:

def do_something(x, y):
    x.insert(0, ’z’)
    y = [’z’] + y

并且你在外面的打印仍然会像报告一样,因为函数内部和外部的对象的标签不相关,在你的例子中它们恰好相同.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有