1

This is what I have come up with but it feels really clunky and it has to be the slow solution.

class classNameHere(object):
    def __init__(self, number):
        self.value = number

classes = [classNameHere(i) for i in range(1000)]

print(len(classes))

pos = 0

while pos <= len(classes)-1:
    if classes[pos].value % 2:
        del(classes[pos])
    else:
        pos += 1
        
print(len(classes))

1 Answers1

0

You can use a list comprehension:

class classNameHere(object):
    def __init__(self, number):
        self.value = number

classes = [classNameHere(i) for i in range(1000)]
classes = [pos for pos in classes if not pos.value % 2]

print(len(classes))

Output:

500
Red
  • 26,798
  • 7
  • 36
  • 58
  • OMG that's 100 times nicer. I didn't know you could put if statements into list comprehensions. That opens op so many doors. Are list comprehensions fast? –  Jul 26 '20 at 04:46
  • @TheDopplerEffect, this post should answer you question [`Are list comprehensions fast?`](https://stackoverflow.com/questions/22108488/are-list-comprehensions-and-functional-functions-faster-than-for-loops) – sushanth Jul 26 '20 at 04:56