modify list element with list comprehension in python

前端 未结 5 1596
你的背包
你的背包 2021-02-20 17:41

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 ,          


        
相关标签:
5条回答
  • 2021-02-20 18:05

    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

    0 讨论(0)
  • 2021-02-20 18:16

    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
    
    0 讨论(0)
  • 2021-02-20 18:19

    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)
    
    0 讨论(0)
  • 2021-02-20 18:20

    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]]
    
    0 讨论(0)
  • 2021-02-20 18:26
    a = [b + 4 if b < 0 else b for b in a]
    
    0 讨论(0)
提交回复
热议问题