folks,
I want to modify list element with list comprehension. For example, if the element is negative, add 4 to it.
Thus the list
a = [1, -2 ,
This version is older, it would work on Python 2.4
>>> [x < 0 and x + 4 or x for x in [1, -2, 2]]
0: [1, 2, 2]
For newer versions of Python use conditional expressions as in Adam Wagner or BenH answers
If you want to change the list in-place, this is almost the best way. List comprehension will create a new list. You could also use enumerate
, and assignment must be done to a[i]
:
for i, x in enumerate(a):
if x < 0:
a[i] = x + 4
Try this:
b = [x + 4 if x < 0 else x for x in a]
Or if you like map
more than a list comprehension:
b = map(lambda x: x + 4 if x < 0 else x, a)
Why mutate, when you can just return a new list that looks like you want it to?
[4 + x if x < 0 else x for x in [1, -2, 2]]
a = [b + 4 if b < 0 else b for b in a]