[英]Am I interpreting this list comprehension correctly in 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吗?
我认为是对的。 您正在正确循环。 但是,您不是要在列表中添加单词吗? 您是要这样做吗?
所以对于第一个您可以使用
my_list = []
for word in mytokens:
if word.lemma_ != "-PRON-":
my_list.append(word.lemma_.lower().strip())
else:
my_list.append(word.lower_)
通过将它们添加到这样的列表中,这意味着您可以直接比较翻译的输出和列表理解的输出。 如果正确完成, mytokens
应该与my_list
完全相同。
在第二个翻译中也有一个小错误。 它应该是:
for word in mytokens:
if word not in stopwords and word not in punctuations:
yield word
您还可以修改第二个翻译,以将所有单词添加到列表中。
让我们简化一下:
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
或只return
comprehended == comprehender(coll)
来确保两者等效。
您可以对任何列表理解进行有效的健全性检查,只需更改此模式以匹配您的理解逻辑即可。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.