You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何检查指定值是否存在于二维列表的某一列中

检查二维列表指定列是否存在指定值的最优实现方案

方案1:纯Python原生实现(无第三方依赖,性能最优)

不需要提取整列所有数据,用短路求值的生成器表达式即可实现,找到第一个匹配项就会立刻停止遍历,性能远高于先提取全列再判断的写法:

# target 为要查找的目标值,col_idx 为指定列的索引(Python默认从0开始计数)
def is_in_column(target, col_idx, two_d_list):
    return any(row[col_idx] == target for row in two_d_list)

# 对应你的需求:检查4是否在第2列(如果是1起始计数的列号,这里索引要改成1)
numbers = [
    [5, 3, 0, 0, 7, 0, 0, 0, 0],
    [6, 0, 0, 1, 9, 5, 0, 0, 0],
    [0, 9, 8, 0, 0, 0, 0, 6, 0],
    [8, 0, 0, 0, 6, 0, 0, 0, 3],
    [4, 0, 0, 8, 0, 3, 0, 0, 1],
    [7, 0, 0, 0, 2, 0, 0, 0, 6],
    [0, 6, 0, 0, 0, 0, 2, 8, 0],
    [0, 0, 0, 4, 1, 9, 0, 0, 5],
    [0, 0, 0, 0, 8, 0, 0, 7, 9],
]
if is_in_column(4, 2, numbers):
    print("dang")

如果要实现你想要的numbers.columns[col]调用风格,可以简单封装类实现:

class List2D:
    def __init__(self, data):
        self.data = data
        self.columns = ColumnsAccessor(self.data)

class ColumnsAccessor:
    def __init__(self, data):
        self.data = data
    def __getitem__(self, col_idx):
        # 返回生成器,遍历才取值,节省内存
        return (row[col_idx] for row in self.data)

# 使用示例
numbers = List2D(numbers)
if 4 in numbers.columns[2]:
    print("dang")

方案2:numpy实现(适合高频矩阵操作、大数据量场景)

如果项目允许引入第三方依赖,用numpy的向量化操作性能更高,写法也更简洁:

import numpy as np

# 二维列表转numpy数组
arr = np.array(numbers)
# [:, col_idx] 表示取所有行的第col_idx列
if 4 in arr[:, 2]:
    print("dang")

方案选择建议

  • 仅单次判断、不想引入额外依赖:选方案1的生成器表达式写法
  • 频繁对二维列表做行列操作、数据量过万:选方案2的numpy实现

内容的提问来源于stack exchange,提问作者Scott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 21:27:03