簡體   English   中英

在python中使用list comprehension修改list元素

[英]modify list element with list comprehension in python

鄉親,

我想用list comprehension修改list元素。 例如,如果元素為負數,則向其中添加4。

因此列表

a = [1, -2 , 2]

將被轉換為

a = [1, 2, 2]

以下代碼有效,但我想知道是否有更好的方法來做到這一點?

謝謝。

for i in range(len(a)):
    if a[i]<0:
        a[i] += 4
a = [b + 4 if b < 0 else b for b in a]

如果您想要就地更改列表,這幾乎是最好的方法。 列表理解將創建一個新列表。 你也可以使用enumerate ,並且必須對a[i]進行賦值:

for i, x in enumerate(a):
  if x < 0:
    a[i] = x + 4

這個版本較舊,可以在Python 2.4上運行

>>> [x < 0 and x + 4 or x for x in [1, -2, 2]]
0: [1, 2, 2]

對於較新版本的Python,使用條件表達式,如Adam Wagner或BenH答案

試試這個:

 b = [x + 4 if x < 0 else x for x in a]

或者如果你喜歡map而不是列表理解:

 b = map(lambda x: x + 4 if x < 0 else x, a)

為什么要改變,當你可以返回一個看起來像你想要的新列表?

[4 + x if x < 0 else x for x in [1, -2, 2]]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM