簡體   English   中英

為什么列表理解會給我項目未定義錯誤?

[英]Why does list comprehension give me item not defined error?

我有一個pandas.Seriesspacy.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.

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