为什么列表理解给我项未定义错误?

问题描述 投票:2回答:2

我的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时却未定义doc?

python list-comprehension
2个回答
2
投票

您的调用文档在定义之前。

[(x.text, x.label) for doc in docs for x in doc.ents]

2
投票

这也是我在列表理解上的一个经典错误。但是你不能为此而责怪。关于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来说,如果一个序列不起作用,那就是相反的方式😅

© www.soinside.com 2019 - 2024. All rights reserved.