忽略偶数行展平二维列表的技术实现需求
问题描述
我有一个形状为(65,2)的二维列表,示例如下:
[[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]
需要忽略其中的偶数行(保留第1、3、5…行),将其展平为形状为(65,)的一维列表,预期输出如下:
[1, 2, 3, 4, 5, 6]
解决方案
普通列表处理
通过切片筛选出所有奇数行(Python索引从0开始,arr[::2]会选取索引为0、2、4…的行,对应原问题的第1、3、5行),再用嵌套列表推导式展平:
# 定义原二维列表 original_list = [[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]] # 筛选奇数行并展平 flattened_list = [num for row in original_list[::2] for num in row] print(flattened_list)
运行结果:
[1, 2, 3, 4, 5, 6]
NumPy数组处理
如果你的数据是NumPy数组(结合问题中提到的“形状”更符合NumPy场景),可以用切片和flatten()方法快速实现:
import numpy as np # 定义原NumPy数组 original_array = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]]) # 筛选奇数行并展平 flattened_array = original_array[::2].flatten() # 转为普通列表(可选) print(flattened_array.tolist())
运行结果:
[1, 2, 3, 4, 5, 6]
内容的提问来源于stack exchange,提问作者Mouna Ahmen
相关产品推荐
相关产品推荐

