我想檢查同一個列表中同時存在的兩個單詞。例如我有一個單詞列表就像word_list = [I have a dream, I am a dreamer]并有一個名為 df 的數(shù)據(jù)框,例如df# word1 word2# have dream# basketball player我想檢查同一個列表中同時存在的兩個單詞。所以我這樣寫了我的代碼for index, row in df.iterrows(): text = [] tokenized = word_list.split() for tokenized_word in tokenized: if row["word1"] == tokenized_word: for tokenized_word in tokenized: if row["word2"] == tokenized_word: text.append(word_list)如果列表有很多元素并且數(shù)據(jù)框有很多單詞,則運行此代碼將花費很多時間。無論如何要加快我的代碼嗎?
1 回答

手掌心
TA貢獻1942條經(jīng)驗 獲得超3個贊
我會這樣做:
tokens = set(word_list.split())
text = [
word_list for _, row in df.iterrows()
if row["word1"] in tokens and row["word2"] in tokens
]
由于word_list永遠不會改變,因此您只需構(gòu)建set一次,然后之后的每次word in tokens檢查都是恒定時間的,而不需要對整個列表進行迭代。
請注意,我不確定這是否實際上是您想要構(gòu)建的列表(一遍word_list又一遍重復的相同副本),但這就是您原始循環(huán)的作用。:)
添加回答
舉報
0/150
提交
取消