From 4401f8a6bddfb8c6a26b45e93f7c72208ab637b8 Mon Sep 17 00:00:00 2001
From: Erik Kooistra <kooistra@astron.nl>
Date: Tue, 19 Jun 2018 09:47:05 +0000
Subject: [PATCH] Added find_indices_where() and variants for ==, !=, <, <=, >,
 >=.

---
 tools/oneclick/base/common.py | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/tools/oneclick/base/common.py b/tools/oneclick/base/common.py
index de1a5a0925..01a7e7d428 100644
--- a/tools/oneclick/base/common.py
+++ b/tools/oneclick/base/common.py
@@ -421,6 +421,27 @@ def index_a_in_multi_b(a, b):
         pass
     return None
 
+def find_indices_where(in_list, value, condition=operator.eq):
+    """Return list of indices in in_list that match the condition value
+    
+       Condition operators from import operator are e.g. 
+         operator.eq : ==
+         operator.ne : !=
+         operator.lt : <
+         operator.le : <=
+         operator.gt : >
+         operator.ge : >=
+    """
+    return [i for i,x in enumerate(in_list) if condition(x, value)]
+        
+def find_indices_where_eq(in_list, value): return find_indices_where_value(in_list, value, operator.eq)
+def find_indices_where_ne(in_list, value): return find_indices_where_value(in_list, value, operator.ne)
+def find_indices_where_lt(in_list, value): return find_indices_where_value(in_list, value, operator.lt)
+def find_indices_where_le(in_list, value): return find_indices_where_value(in_list, value, operator.le)
+def find_indices_where_gt(in_list, value): return find_indices_where_value(in_list, value, operator.gt)
+def find_indices_where_ge(in_list, value): return find_indices_where_value(in_list, value, operator.ge)
+
+
 def unique(in_list):
     """
     Extract unique list elements (without changing the order like set() does)
-- 
GitLab