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

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


例如


我有一个单词列表就像


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)

如果列表有很多元素并且数据框有很多单词,则运行此代码将花费很多时间。无论如何要加快我的代码吗?


元芳怎么了
浏览 61回答 1
1回答

手掌心

我会这样做: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又一遍重复的相同副本),但这就是您原始循环的作用。:)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python