【问题标题】:checking for elements in rows and columns of lists of lists without using pandas在不使用 pandas 的情况下检查列表列表的行和列中的元素
【发布时间】:2021-11-29 19:56:31
【问题描述】:

如果我有一个列表列表

矩阵 = [[2, 3, 1, 2],[1, 2, 3, 2],[3, 3, 1, 2], [2, 2, 3, 3]]

如果每个列中都存在例如 element = 1,我如何使用 for 循环进行检查

【问题讨论】:

    标签: python list iterator


    【解决方案1】:

    使用allin 和列表推导:

    matrix = [[2, 3, 1, 2], [1, 2, 3, 2], [3, 3, 1, 2], [2, 2, 3, 3]]
    
    valid = all(1 in row for row in matrix)
    

    或者,详细的方式:

    matrix = [[2, 3, 1, 2], [1, 2, 3, 2], [3, 3, 1, 2], [2, 2, 3, 3]]
    
    valid = True
    for row in matrix:
        if 1 not in row:
            valid = False
            break
    

    【讨论】:

    • 不需要括号。您正在创建一个列表,然后在其上评估 all。只需让all 评估生成器理解即可。根据价值,它会更便宜。
    【解决方案2】:

    使用 numpy:

    np.any(a==1, 1).all()
    

    >>> a = np.array([[2, 3, 1, 2],[1, 2, 3, 2],[3, 3, 1, 2], [2, 2, 3, 3]])
    >>> np.any(a==1, 1).all()
    False
    >>> a = np.array([[2, 3, 1, 2],[1, 2, 3, 2],[3, 3, 1, 2], [2, 1, 3, 3]])
    >>> np.any(a==1, 1).all()
    True
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      相关资源
      最近更新 更多