Home > Net >  filter a array in a list that contain a certain value
filter a array in a list that contain a certain value

Time:12-28

I have list

combi_col = [[0,1,2][0,1],[0],[1,2],[0,2],[1,2,3],[2,3],[3,1]

I want to filter this list to only show a list that only contain 0 in the array

The result should only keep all arrays in the list which contain 0

In addition, the array should not contain only 1 value. It should contain minimum 2 values

The result should look like

result = [[0,1,2][0,1],[0,2]]

CodePudding user response:

You can do in one line via list comprehension:

[x for x in combi_col if 0 in x and len(x) >= 2]
#[[0, 1, 2], [0, 1], [0, 2]]

CodePudding user response:

You can try something like this:

combi_col = [[0,1,2],[0,1],[0],[1,2],[0,2],[1,2,3],[2,3],[3,1]]
result = []

for entry in combi_col:
    if 0 in entry and len(entry) >= 2:
        result.append(entry)

CodePudding user response:

You could use built in filter:

filtered = list(filter(lambda list_element: 0 in list_element and len(list_element)>1, combi_col))

First parameter is function with which you filter, and second is collection to be filtered.

CodePudding user response:

Answer from NiiRexo is correct, but you can do the same in one line using list comprehension:

result = [nested_list for nested_list in combi_col if len(nested_list)>1 and (0 in nested_list)]

CodePudding user response:

list = [[0,1,2],[0,1],[0],[1,2],[0,2],[1,2,3],[2,3],[3,1]] result = []

for i in list: if 0 in i and len(i) >= 2: result.append(i)

CodePudding user response:

To filter the list and get the desired result, you can use a list comprehension combined with the in operator to check if the element 0 is present in each sublist and the len function to check if the sublist has more than one element.

Here's an example of how you could do this:

result = [x for x in combi_col if 0 in x and len(x) > 1]

This will create a new list called result that only contains the sublists from combi_col that satisfy both conditions: they contain the element 0 and they have more than one element. The resulting list will be:

result = [[0,1,2][0,1],[0,2]]
  • Related