[英]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.