[英]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.