![](/img/trans.png)
[英]Why does pdb give NameError for variables referenced in “if” clause of list comprehension?
[英]Why does list comprehension give me item not defined error?
我有一個pandas.Series
的spacy.tokens.doc.Doc
並且我正在運行這個 for 循環:
for doc in docs:
print([(x.text, x.label_) for x in doc.ents])
但是當我嘗試將其轉換為列表理解時: [(x.text, x.label) for x in doc.ents for doc in docs]
它拋出這個錯誤:
名稱“doc”未定義
我理解這個錯誤,但是當我在列表理解中定義它時,為什么它說 doc 未定義?
您的調用文檔在定義之前。
[(x.text, x.label) for doc in docs for x in doc.ents]
這也是我犯的列表理解的一個典型錯誤。
但你不能為此受到責備。 if/else/for 在這些中的排序方式很可能有一個邏輯,但我的 go 方法是嘗試一個簡單的示例來獲得正確的序列。
例如,如果列表推導中有一個 if 條件,你可以寫成,
Y = [x if (some_condition) for x in Xs]
到目前為止,一切都很好。 但是如果里面有一個 else 語句,這將變成類似
Y = [x1 for x1,x2 in Xs if (some_condition) else x2]
你看 if 是現在之后的 for。
雙 for 循環也是如此。 你可以簡單地嘗試
foo = [c for c in bar for bar in ["foo", "bar"]]
和
foo = [c for bar in ["foo", "bar"] for c in bar]
和 go 與任何工作。 這比記住它容易。 或者只是記住,對於 double for,如果一個序列不起作用,則相反
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.