Simplify some inscrutable map/map/ifilter/zip code

This version traverses the results twice but is probably faster
because it generates fewer temporary results.

Signed-off-by: Brian Foley <bpfoley@google.com>
Reviewed-by: Viktor Bachraty <vbachraty@google.com>
diff --git a/lib/client/gnt_cluster.py b/lib/client/gnt_cluster.py
index 409f0e2..f834d2b 100644
--- a/lib/client/gnt_cluster.py
+++ b/lib/client/gnt_cluster.py
@@ -773,15 +773,8 @@
 
   results = jex.GetResults()
 
-  (bad_jobs, bad_results) = \
-    map(len,
-        # Convert iterators to lists
-        map(list,
-            # Count errors
-            map(compat.partial(itertools.ifilterfalse, bool),
-                # Convert result to booleans in a tuple
-                zip(*((job_success, len(op_results) == 1 and op_results[0])
-                      for (job_success, op_results) in results)))))
+  bad_jobs = sum(1 for (job_success, _) in results if not job_success)
+  bad_results = sum(1 for (_, op_res) in results if not (op_res and op_res[0]))
 
   if bad_jobs == 0 and bad_results == 0:
     rcode = constants.EXIT_SUCCESS