Multiple IF conditions in a python list comprehension
conditional-statements, list-comprehension, python
Solution
How about
ar = [('four' if i % 4 == 0 else ('six' if i % 6 == 0 else i)) for i in range(1, n)]
For example, if `n = 30` this is
[1, 2, 3, 'four', 5, 'six', 7, 'four', 9, 10, 11, 'four', 13, 14, 15, 'four', 17, 'six', 19, 'four', 21, 22, 23, 'four', 25, 26, 27, 'four', 29]
ETA: Here's how you could apply a list of conditions:
CONDITIONS = [(lambda i: i % 4 == 0, "four"), (lambda i: i % 6 == 0, "six"),
(lambda i: i % 7 == 0, "seven")]
def apply_conditions(i):
for condition, replacement in CONDITIONS:
if condition(i):
return replacement
return i
ar = map(apply_conditions, range(0, n))
Problem
I was wondering, is it possible to put multiple `if` conditions in a list comprehension? I didn't find anything like this in the docs. I want to be able to do something like this ``` ar=[] for i in range(1,n): if i%4 == 0: ar.append('four') elif i%6 == 0: ar.append('six') else: ar.append(i) ``` using a list comprehension. How can I do it? Is this even possible? If its not, what would be the most elegant (pythonic) way to accomplish this?