python - 为什么迭代生成嵌套列表不会删除内部列表
问题描述
my_list = ['abc', 'def']
outer_list = []
for element in my_list:
inner_list = []
for ch in element:
inner_list.append(ch)
outer_list.append(inner_list)
print(outer_list)
# output [['a', 'b', 'c'], ['d', 'e', 'f']]
我的问题是,为什么这行得通?即,为什么不line inner_list = []
删除inner_list 的先前实例?我认为这与outer_list 的范围在'for' 块之外有关。也许一旦 inner_list 占据了那里,它就与变量名分离了?这么近吗?
解决方案
我建议您考虑这两种情况,并在评论中进行全面解释:
案例
list = []
:my1stList = [1, 2 ,3, 4, 5] # my1stList references the list [1, 2 ,3, 4, 5] my2ndList = my1stList # my2ndList references the same list as my1stList my1stList = [] # my1stList references another list (which is empty) print(my2ndList) # it prints: [1, 2, 3, 4, 5]
案例
list[:] = []
:my1stList = [1, 2 ,3, 4, 5] # my1stList references the list [1, 2 ,3, 4, 5] my2ndList = my1stList # my2ndList references the same list as my1stList my1stList[:] = [] # the list referenced by my1stList is emptied print(my2ndList) # it prints: []
我希望您现在可以理解:您附加到的每个列表outer_list
都不会被覆盖。只有它以前的参考inner_list
改变了。
推荐阅读
- angular - 无法使用 Firebase 和 Angular 显示数据
- javascript - 如何在 aws dynamodb 上创建表
- html - 文本未垂直居中
- laravel - 将 laravel 添加到已经在 web 上使用 laravel 运行的现有项目
- python - Jupyter Notebook - 第二次无法获取用户输入 - EOFError:读取一行时出现EOF
- python - 使用 Python 将列表数据插入表中
- json - 如何将 keyTextTransform() 用于嵌套 json?
- c# - 有没有办法为 ASP.NET Core 中的内容设置通用根路径?
- ethereum - TypeError:无法读取未定义的属性“eth”
- java - 在cardview上添加onclicklistener