[英]Pythonic way not working with list
我有一個看似簡單的問題,但是我認為應該解決的代碼表現不佳,但是我發現功能上不那么優雅的代碼在功能上與預期一樣。 你能幫我理解嗎?
任務:創建一個列表,刪除一個特定的值。 特定的用例是我要刪除pd.df列的特定列表,但這不是我要關注的部分。 我似乎無法通過不錯的pythonic單行操作來做到這一點。
我認為應該起作用:
result = list(df.columns).remove(x)
這導致類型為“ NoneType”的對象
但是,以下工作正常:
result = list(df.columns)
result.remove(X)
這些在功能上看起來與我相同-但最常用的方法更清晰,更可取,但不起作用。 為什么?
原因是remove
更改了列表,並且不返回新列表,因此您無法鏈接它。
那么以下方式呢?
result = [item for item in df.columns if item != x]
請注意,此代碼與您提供的代碼不完全相同 ,因為它將刪除所有出現的x
,而不僅僅是remove(x)
的第一個。
這些絕對不是功能上等效的。
remove
怎樣返回。 remove
始終返回None,因為它什么也不返回。 remove
的返回。 要做的等效和錯誤的事情是: :
result = list(df.columns)
result = result.remove(X)
這兩段代碼並不是真正等效的。 在第二個中,變量result
保存您的列表。 然后,您在該列表上調用remove
,該元素將被刪除。 到現在為止還挺好。
在第一段代碼中,您嘗試將remove()
的返回值分配給result,因此它與以下內容相同:
result = list(df.columns)
result = result.remove(X)
並且由於remove
沒有返回值,因此結果將是NoneType
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.