Python的二维数组初始化正确吗?

2026-05-26 16:180阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1496个文字,预计阅读时间需要6分钟。

Python的二维数组初始化正确吗?

这是刷题避坑系列的第一篇文章,本系列帮助大家避开刷题/代码中常见的坑、怪事。在Python中,定义长度为5的一维数组,所有数值为0。


这是「​刷题躲坑​」系列的第一篇文章,这个系列帮助大家躲掉刷题/代码中常见的坑。

怪事

在 Python 中,定义长度为 ​​3​​​,数值全为 ​​0​​ 的一维​列表​(也就是​数组​)的方式有:

a = [0, 0, 0]
a = [0 for _ in range(3)]
a = [0] * 3

在刷算法题是,我们常常遇到的一个场景,就是需要定义一个和输入等长的一维列表。所以,我基本都是用上述的第 3 种方式。

如:

a = [0] * len(nums)

假设 ​​nums​​​ 的长度是 5,那么运行完上述代码以后,​​a​​​ 的值为 ​​[0, 0, 0, 0, 0]​​。

我们修改一下 ​​a​​ 列表:

In [1]: a[0] = 666

In [2]: a
Out[2]: [666, 0, 0, 0, 0]

可以看到,修改 ​​a​​​ 列表的第 ​​0​​ 个元素​并不会​影响到其他位置的元素。

这是理所当然的事情。

可是,​当数组变成二维的时候,怪事就发生了​。

按照上述定义一维数组的思路,定义一个 ​​3​​​ 行 ​​2​​​ 列的二维数组 ​​b​​:

In [1]: b = [[0] * 2] * 3

In [2]: b
Out[2]: [[0, 0], [0, 0], [0, 0]]

看起来 ​​b​​ 是符合要求的,没问题吧。

阅读全文

本文共计1496个文字,预计阅读时间需要6分钟。

Python的二维数组初始化正确吗?

这是刷题避坑系列的第一篇文章,本系列帮助大家避开刷题/代码中常见的坑、怪事。在Python中,定义长度为5的一维数组,所有数值为0。


这是「​刷题躲坑​」系列的第一篇文章,这个系列帮助大家躲掉刷题/代码中常见的坑。

怪事

在 Python 中,定义长度为 ​​3​​​,数值全为 ​​0​​ 的一维​列表​(也就是​数组​)的方式有:

a = [0, 0, 0]
a = [0 for _ in range(3)]
a = [0] * 3

在刷算法题是,我们常常遇到的一个场景,就是需要定义一个和输入等长的一维列表。所以,我基本都是用上述的第 3 种方式。

如:

a = [0] * len(nums)

假设 ​​nums​​​ 的长度是 5,那么运行完上述代码以后,​​a​​​ 的值为 ​​[0, 0, 0, 0, 0]​​。

我们修改一下 ​​a​​ 列表:

In [1]: a[0] = 666

In [2]: a
Out[2]: [666, 0, 0, 0, 0]

可以看到,修改 ​​a​​​ 列表的第 ​​0​​ 个元素​并不会​影响到其他位置的元素。

这是理所当然的事情。

可是,​当数组变成二维的时候,怪事就发生了​。

按照上述定义一维数组的思路,定义一个 ​​3​​​ 行 ​​2​​​ 列的二维数组 ​​b​​:

In [1]: b = [[0] * 2] * 3

In [2]: b
Out[2]: [[0, 0], [0, 0], [0, 0]]

看起来 ​​b​​ 是符合要求的,没问题吧。

阅读全文