python打印列表时的混乱
在下面的python代码中,我有一个列表,即to_do_列表,其中包含两个列表,即other_事件和grocery_列表,我在grocery_列表中插入了一个项目,然后将其删除 我的困惑是,当我更新杂货店列表时,待办事项列表会自动更新,但当我删除杂货店列表时,待办事项列表不会更新。。。为什么?python打印列表时的混乱,python,list,printing,Python,List,Printing,在下面的python代码中,我有一个列表,即to_do_列表,其中包含两个列表,即other_事件和grocery_列表,我在grocery_列表中插入了一个项目,然后将其删除 我的困惑是,当我更新杂货店列表时,待办事项列表会自动更新,但当我删除杂货店列表时,待办事项列表不会更新。。。为什么? grocery_list = ['banana', 'mango', 'apple'] other_events =['pick up kids','do laundry', 'dance class'
grocery_list = ['banana', 'mango', 'apple']
other_events =['pick up kids','do laundry', 'dance class']
to_do_list = [other_events, grocery_list]
print(to_do_list)
grocery_list.insert(1,'onions');
print(grocery_list)
del grocery_list
print(to_do_list)
其产出是:
[['pick up kids', 'do laundry', 'dance class'], ['banana', 'mango', 'apple']]
['banana', 'onions', 'mango', 'apple']
[['pick up kids', 'do laundry', 'dance class'], ['banana', 'onions', 'mango', 'apple']]
改为使用del\u list[:]
输出:
但是为什么呢?
假设我们有一个列表:
食品杂货清单=[“香蕉”、“芒果”、“苹果”]
使用此选项删除列表程序时,会引发错误:
Traceback (most recent call last):
File "<pyshell#619>", line 1, in <module>
del grocery_list
NameError: name 'grocery_list' is not defined
在这段代码中,您使用了del-grovery_-list,它只删除grovery_-list删除一个名称会从本地或全局命名空间中删除该名称的绑定,如果不清除该列表,您必须使用del-grovery_-list[:]来完全删除它
有关del ref to的更多详细信息,更新杂货店列表时,将对象更新为杂货店列表的原因是,您的杂货店列表仅包含杂货店列表上的引用 现在,为什么删除杂货店列表后,to_do_列表没有更新是因为keywork del没有删除其上的对象,而只是从名称空间中删除杂货店列表 以下是关于del的一段引述: 删除一个名称将从本地或本地数据库中删除该名称的绑定 全局命名空间
杂货店清单上有很多关于它和 杂货店名单 将只删除一个引用,而其他引用将存在 从列表中删除所有引用的一种方法是使用切片分配
del grocery_list[:]
改为使用del\u list[:]
Traceback (most recent call last):
File "<pyshell#619>", line 1, in <module>
del grocery_list
NameError: name 'grocery_list' is not defined
del grocery_list[:]