python 使用列表表达式 二维数组
时间: 2025-03-27 15:31:32 浏览: 40
### 使用列表推导式创建和操作二维数组
在 Python 中,可以利用列表推导式简洁而高效地创建和操作二维数组。下面展示如何通过嵌套的列表推导式来实现这一点。
#### 创建二维数组
要创建一个 m 行 n 列的二维数组,可以通过如下方式:
```python
m = 3 # 表示行数
n = 4 # 表示列数
two_d_array = [[0 for _ in range(n)] for _ in range(m)]
```
这段代码会生成一个由零填充的 3×4 的矩阵[^1]。
#### 初始化带有特定模式的数据
如果希望初始化具有某种规律性的数据结构,则可以在表达式部分加入逻辑判断或其他计算方法。例如,构建一个斜对角线为 `True` 而其余位置均为 `False` 的布尔型方阵:
```python
size = 5
diagonal_matrix = [[i == j for j in range(size)] for i in range(size)]
```
这将得到一个 5x5 大小的布尔值矩阵,在主对角线上元素全为 True,其他地方都是 False。
#### 对现有二维数组进行变换
对于已经存在的二维数组,也可以应用类似的技巧来进行转换或筛选。比如给定一个多维列表并想要获取其中所有的偶数值:
假设有一个名为 `matrix` 的多维列表:
```python
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
even_elements = [item for sublist in matrix for item in sublist if item % 2 == 0]
print(even_elements) # 输出: [2, 4, 6, 8]
```
这里采用了双重循环的方式遍历整个二维表,并仅保留满足条件(即能被2整除)的项。
#### 结合zip函数处理多个序列
当涉及到两个及以上相同长度的一维向量时,可借助于内置函数 `zip()` 来简化某些运算过程。例如求解两组坐标点之间的距离平方之和:
```python
points_a = [(0, 0), (1, 1), (-1, -1)]
points_b = [(2, 2), (3, 3), (0, 0)]
distances_squared_sum = sum((ax-bx)**2 + (ay-by)**2 for (ax, ay),(bx, by) in zip(points_a, points_b))
print(distances_squared_sum)
```
上述例子中,先用 `zip()` 将对应的坐标配对起来再逐个相减取模后累加得出最终结果[^3]。
阅读全文
相关推荐


















