Rahul Singh
Rahul Singh

Reputation: 15

removing nested list elements with all zero entries

In a nested list (list of lists), how can I remove the elements that have all the entries as zero.

For instance: values =

[[1.1, 3.0], [2.5, 5.2], [4.7, 8.2], [69.2, 36.6], [0.7, 0.0], [0.0, 0.0], [0.4, 17.9], [14.7, 29.1], [6.8, 0.0], [0.0, 0.0]]

should change to

[[1.1, 3.0], [2.5, 5.2], [4.7, 8.2], [69.2, 36.6], [0.7, 0.0], [0.4, 17.9], [14.7, 29.1], [6.8, 0.0]]

Note: nested list could have n number of elements, not just 2.

Trying to do this to crop two other lists. something like:

for label, color, value in zip(labels, colors, values):
    if any(value) in values: #this check needs update
        new_labels.append(label)
        new_colors.append(color)

Upvotes: 1

Views: 160

Answers (1)

Steven Rumbalski
Steven Rumbalski

Reputation: 45542

Take advantage of the fact that 0.0 is falsey and filter using any().

result = [sublist for sublist in arr if any(sublist)]

Upvotes: 3

Related Questions