How do i remove the repetitions
if a < 2 or b < 2 or c < 2 or d < 2:
pass #logic
I want to remove the repetitions. Something like this:
if (a,b,c,d) < 2:
pass #logic
How do i remove the repetitions
if a < 2 or b < 2 or c < 2 or d < 2:
pass #logic
I want to remove the repetitions. Something like this:
if (a,b,c,d) < 2:
pass #logic
I wouldn't import numpy
just for this as other answers suggest. It's probably overkill.
I would do something like:
condition = lambda x: x < 2
if any(condition(x) for x in (a, b, c, d)):
# whatever you want
Or more compact (but less reusable):
if any(x < 2 for x in (a, b, c, d)):
# whatever you want
Another slightly different way is to check if the smallest variable is less than the target value. In other words, if the smallest variable is not less than the target - then surely none of them is:
if min(a, b, c, d) < 2:
# do something
This however needs to actually find the minimal value behind the scenes and loses the short-circuiting advantage of using any
with a generator expression.
When using numpy this can be done with .all() and .any():
import numpy as np
array = np.asarray([1,2,3])
if (array < 2).any():
print('True')
else:
print('False')
#output: True
if (array < 2).all():
print('True')
else:
print('False')
#output: False
In addition to other answers, use generator expression
to reduce computing time
if True in (i < 2 for i in [a,b,c,d]):
pass #logic
I would have used combination of Numpy and any
here.
For example:
a, b, c, d = 10, 10, 10, 10
Convert it into a numpy array:
import numpy as np
arr = np.array([a, b, c, d])
And now you can do this:
if any(arr < 2):
pass #logic
Use built-in any
function:
if any(map(lambda x: x < 2, (a, b, c, d))):
pass # whatever here