簡體   English   中英

我在python中正確解釋此列表理解嗎?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM