簡體   English   中英

如何在列表推導式中使用 if-else 條件來覆蓋現有列表?

[英]How can I use an if-else condition inside a list comprehension to overwrite an existing list?

我試圖將大於 3 的數字乘以 2,然后從其他所有數字中減去 1。 但是,列表沒有任何反應。 這是我的代碼:

lst = [1,2,3,4,5,6,7,8,9,10]

print (lst)

[x*2 if x > 3 else x-1 for x in lst]     

print (lst)

為什么列表推導式沒有修改lst變量的內容?

您沒有將其重新分配給變量名稱。

lst = [1,2,3,4,5,6,7,8,9,10]

print (lst)

lst = [x*2 if x > 3 else x-1 for x in lst]

print (lst)

列表理解和分配

你錯過了一個任務。 像您這樣的列表推導式不會對列表元素進行就地修改。 相反,該表達式返回一個新列表,因此您必須列表推導式表達式的結果分配回一個變量。 例如:

list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list = [x*2 if x > 3 else x-1 for x in list]
print(list)

在 Ruby 中,當然有執行自變異操作的方法,但我個人不知道 Python 等價物保留了您在此處嘗試使用的語義。

暫無
暫無

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

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