如何让我的python循环脚本运行得更快,使用更少的循环

  • 本文关键字:循环 脚本 python 运行 python
  • 更新时间 :
  • 英文 :


我想检查同一列表中同时存在两个单词。

例如

我有一个单词列表,就像一样

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的同一副本一遍又一遍地重复(,但这是您原始循环所做的。:(

最新更新