for循环中的项目顺序

时间:2016-04-15 11:33:05

标签: python python-2.7 python-3.x

我有这个数据

  1.  def lem(str):
    return synsets for every str

  2. list_terms = list of terms
  3. list_st = list of strings as input for the function

这里需要的是在术语列表中找到任何字符串作为函数的输出。我的问题是下面代码中项目的顺序

if any(i in list_terms for i in lem(item) for item in list_st):
    do somethind

此代码提供错误

NameError: name 'item' is not defined

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

嗯,你真的需要它是一个列表理解吗? 如果你更明确地写下这个问题,我认为这个问题会更明显:

terms = []
for item in list_st:
    for i in lem(item):
        if i in list_terms:
            terms.append(i)
if terms:
     do_something

这有点难看,因为它遵循Arrow Anti Pattern,但更清楚地说明这里发生了什么。

如果您将其转换为列表理解,请记住您需要反向顺序或循环声明(请参阅上面的注释)。