我想检查同一列表中同时存在两个单词。
例如
我有一个单词列表,就像一样
word_list = [I have a dream, I am a dreamer]
并有一个名为df的数据帧,类似
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)
如果列表中有很多元素,而数据帧中有很多单词,那么运行这段代码将花费很多时间。无论如何要加快我的代码?
我会这样做:
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
永远不会更改,您只需要从中构建一次set
,然后在此之后的每个word in tokens
检查都是恒定时间,而不需要在整个列表上进行迭代。
请注意,我不确定这是否真的是您想要构建的列表(word_list
的同一副本一遍又一遍地重复(,但这是您原始循环所做的。:(