我在python中正确地解释了这个列表理解吗?

2024-09-28 17:30:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python还是相当陌生的,在阅读列表理解时仍然有一些失手。我试着把我在教程中看到的两个列表理解翻译成它的加长形式。我翻译对了吗?你知道吗

列表理解1

mytokens = [ word.lemma_.lower().strip() if word.lemma_ != "-PRON-" else word.lower_ for word in mytokens ]

翻译1

for word in mytokens:
    if word.lemma_ != "-PRON-":
        word.lemma_.lower().strip()
    else:
        word.lower_

列表理解2

mytokens = [ word for word in mytokens if word not in stopwords and word not in punctuations ]

翻译2

for word in mytokens:
    if word not in stopwords and not in punctuations:
        yield word

对于翻译2,我不认为“屈服词”是正确的,因为它不是一个定义。我猜列表理解2执行if语句并将单词放回列表mytokens中,所以它可能应该是.append?你知道吗


Tags: andin列表forifnotlowerelse
2条回答

让我们简化一下:

coll = ["Gerry", "Mary", "Sue"]

comprehended = [ word.lower() for word in coll]

def comprehender(coll):
  coll_out = []
  for word in coll:
      coll_out.append(word.lower())
  return coll_out

如果您运行这个,您可以通过使用assert或仅仅returning comprehended == comprehender(coll)来确保这两者是等价的

这是一个有效的健全检查,你可以对任何列表的理解,你只是改变这个模式,以符合逻辑的理解。你知道吗

我认为这是对的。你循环正确。但是,您没有将单词添加到列表中吗?你是说要这么做吗?你知道吗

所以第一个你可以用

my_list = []
for word in mytokens:
    if word.lemma_ != "-PRON-":
        my_list.append(word.lemma_.lower().strip())
    else:
        my_list.append(word.lower_)

通过将它们添加到这样的列表中,意味着您可以直接比较翻译的输出和列表理解的输出。^如果操作正确,{}应该与my_list完全相同。你知道吗

还有一个小错误在第二次翻译。应该是:

for word in mytokens:
    if word not in stopwords and word not in punctuations:
        yield word

您还可以修改第二个翻译,将所有单词添加到列表中。你知道吗

相关问题 更多 >