我想修改列表元素與列表理解。例如,如果該元素爲負數,則將其加4。
因此列表
a = [1, -2 , 2]
將被轉換爲
a = [1, 2, 2]
下面的代碼工作,但我想知道是否有更好的方式來做到這一點?
謝謝。
for i in range(len(a)):
if a[i]<0:
a[i] += 4
我想修改列表元素與列表理解。例如,如果該元素爲負數,則將其加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]
爲什麼變異,當你可以返回一個看起來像你想要的新列表?
[4 + x if x < 0 else x for x in [1, -2, 2]]
這不是最新版本,它會在Python 2.4中
>>> [x < 0 and x + 4 or x for x in [1, -2, 2]]
0: [1, 2, 2]
工作對於Python的較新版本使用conditional expressions在亞當瓦格納或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)
如果你想改變就地列表,這幾乎是最好的辦法。列表理解將創建一個新列表。你也可以使用enumerate
和分配必須做a[i]
:
for i, x in enumerate(a):
if x < 0:
a[i] = x + 4
如果列表是非常大的,會這樣導致內存問題? – nos 2011-12-16 17:29:06