Home > Back-end >  Check if value exists in list's column (Python)
Check if value exists in list's column (Python)

Time:10-27

Probably this question was already asked (if so, please help me, but I couldn't find). So, my question is:

How to check if a value exists in list's column

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],
        ]

I want something like this:

if 4 in numbers.columns[2]: # checking if 4 exists in column 2
    print("dang")

I know iterating through the list and checking column values one by one, but is there better solution? Or what would be the best solution?

CodePudding user response:

You can directly check whether the desired element is in the sequence of "n'th elements of each row":

if 8 in (row[2] for row in numbers):
   print("found")

Note that lists are made to represent arbitrarily sized collections of arbitrary items – that's not ideal for regular data structures such as matrices or "list of columns". You might want to use numpy or a similar library instead, since it has a concept for multi-dimensional arrays.

import numpy as np

#        v---------------v a regular array of row x column size
matrix = np.array(numbers)

#            v----------v of all (:) rows take the third (2) element
found = 8 in matrix[:, 2]

CodePudding user response:

perhaps something like

if any(4 == row[2] for row in numbers):
   print('dang')
  • Related