In Ruby, I'm used to using Enumerable#inject for going through a list or other structure and coming back with some conclusion about it. For example,
[1,3,5,7].inject(true) {|allOdd, n| allOdd && n % 2 == 1}
to determine if every element in the array is odd. What would be the appropriate way to accomplish the same thing in Python?
To determine if every element is odd, I'd use all()
def is_odd(x):
return x%2==1
result = all(is_odd(x) for x in [1,3,5,7])
In general, however, Ruby's inject
is most like Python's reduce()
:
result = reduce(lambda x,y: x and y%2==1, [1,3,5,7], True)
all()
is preferred in this case because it will be able to escape the loop once it finds a False
-like value, whereas the reduce
solution would have to process the entire list to return an answer.
Sounds like reduce
in Python or fold(r|l)'?'
from Haskell.
reduce(lambda x, y: x and y % == 1, [1, 3, 5])
I think you probably want to use all
, which is less general than inject
. reduce
is the Python equivalent of inject
, though.
all(n % 2 == 1 for n in [1, 3, 5, 7])
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With