python多维list创建(避免重复引用)

简介: python多维list创建(避免重复引用)

python多维list创建(避免重复引用)

二维list生成

list_a=[[] for n in range(3)]
list_a

输出:[[], [], []]

对其中一个进行修改

list_a[1]=3
list_a

输出:[[], 3, []]

这样不会改变其它位置的元素

三维list生成

错误用法

list_a=[[] for n in range(3)]
list_b=[list_a for n in range(3)]
list_b

这样表面上输出的是正确的
[[[], [], []], [[], [], []], [[], [], []]]

但是当你修改一个值时,其它相同位置的值也会被修改,像这样

list_b[1][1]=2
list_b

输出的其实是这个
[[[], 2, []], [[], 2, []], [[], 2, []]]

可以看到,并不是我们想要的修改结果,因为这种创建方式(list_b=[list_a for n in range(3)])其实是一种引用,list_b里有三个引用,都指向同一个list_a,所以当你修改其中一个时,对另外两个也会同样会变化。

正确用法

list_b=[[[] for m in range(3)] for n in range(3)]
相关文章
|
22天前
|
测试技术 开发者 Python
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
在 Python 中,创建列表有两种方法:使用方括号 `[]` 和调用 `list()` 函数。虽然两者都能创建空列表,但 `[]` 更简洁、高效。性能测试显示,`[]` 的创建速度比 `list()` 快约一倍。此外,`list()` 可以接受一个可迭代对象作为参数并将其转换为列表,而 `[]` 则需要逐一列举元素。综上,`[]` 适合创建空列表,`list()` 适合转换可迭代对象。
在 Python 中创建列表时,应该写 `[]` 还是 `list()`?
|
1月前
|
索引 Python
Python列表操作-推导式(List Comprehension)
Python列表操作-推导式(List Comprehension)
|
2月前
|
Python
Python量化炒股的获取数据函数— get_billboard_list()
Python量化炒股的获取数据函数— get_billboard_list()
|
3月前
|
Python
Python多维列表(元组)合并成一维形式
Python多维列表(元组)合并成一维形式
20 2
|
3月前
|
索引 Python
【Leetcode刷题Python】从列表list中创建一颗二叉树
本文介绍了如何使用Python递归函数从列表中创建二叉树,其中每个节点的左右子节点索引分别是当前节点索引的2倍加1和2倍加2。
54 7
|
3月前
|
SQL 机器学习/深度学习 算法
【python】python指南(五):静态类型注解之List
【python】python指南(五):静态类型注解之List
37 0
【python】python指南(五):静态类型注解之List
|
3月前
|
测试技术 索引 Python
Python接口自动化测试框架(基础篇)-- 常用数据类型list&set()
本文介绍了Python中list和set两种数据类型的使用,包括它们的创建、取值、增删改查操作、排序以及内置函数的使用,还探讨了list的比较函数和set的快速去重功能。
31 0
|
4月前
|
Python
|
4月前
|
资源调度 分布式计算 DataWorks
DataWorks产品使用合集之如何使用Python UDF(User-Defined Function)来引用第三方模块
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
JSON 算法 算法框架/工具
【python】python指南(十二):Json与dict、list互相转换
【python】python指南(十二):Json与dict、list互相转换
21 0