我的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时却未定义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之后。double循环也是如此。您可以简单地尝试
foo = [c for c in bar for bar in ["foo", "bar"]]
和
foo = [c for bar in ["foo", "bar"] for c in bar]
并采取任何可行的措施。这比记住它容易。或者只是记住,对于double来说,如果一个序列不起作用,那就是相反的方式😅