python中二维数组的赋值问题

本文探讨了Python中使用不同方法初始化列表时的行为差异,特别是'a = [[0, 0] for _ in range(5)]'与'b = [[0, 0]] * 5'的区别。通过实例展示了当修改列表元素时,前者的独立性和后者的连锁反应,解释了拷贝引用与创建新对象之间的微妙区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

= [[00for in range(5)]

= [[00]] * 5

print("old a=", a)

print("old b=", a)

for in range(5):

    a[i][1= i

b[0][1= 1

# for i in range(5):

#     b[i][1] = i

print("new a=", a)

print("new b=", b)

 

输出:

old a= [[00], [00], [00], [00], [00]]

old b= [[00], [00], [00], [00], [00]]

new a= [[00], [01], [02], [03], [04]]

new b= [[01], [01], [01], [01], [01]]

 

问题在“*”上,*应该是拷贝了5个引用(想象一下指针),每个对象指向同一块内容。
所以只要改变其中任何一个内容,其它几个内容都会改变

dp = [[0 for i in range(101)] for i in range(101)]
### Python 中二数组的表示方法 在 Python 中,二维数组通常通过嵌套列表(List of Lists)来实现。这种结构可以被看作是由多个一列表组成的集合,其中每个子列表代表二维数组的一行[^1]。 以下是创建和操作二维数组一个简单示例: ```python # 创建一个简单的二维数组 array_2d = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] # 访问特定元素 (第二行第三列) element = array_2d[1][2] # 输出为 6 print(f"访问到的元素是: {element}") # 向二维数组添加新行 new_row = [10, 11, 12] array_2d.append(new_row) # 打印更新后的二维数组 for row in array_2d: print(row) ``` 上述代码展示了如何初始化一个二维数组并对其进行基本的操作,例如访问单个元素以及向其追加新的行数据。 如果需要更高效的数值计算功能,则推荐使用 NumPy 库中的 `numpy.array` 来处理多数组。NumPy 提供了强大的工具集用于科学计算,并支持更加复杂的索引方式[^3]。 #### 使用 NumPy 的例子 下面是如何利用 NumPy 构建与操作二维数组的例子: ```python import numpy as np # 定义一个二维数组 np_array = np.array([ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]) # 过滤满足一定条件的数据(这里选取大于5的部分) filtered_data = np_array[np_array > 5] print("过滤后的大于5的数据:", filtered_data) # 修改部分区域内的值 np_array[:2, :2] = [[-1, -2], [-3, -4]] print("\n修改前两行前两列为负数的结果:") print(np_array) ``` 此段脚本不仅演示了怎样建立 NumPy 数组,还包含了基础的选择切片技术和布尔掩码技术来进行复杂查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值