如何基于另一个列表中的项目从嵌套列表创建第三个列表

我有一些用户列表

list_of_users=['@elonmusk','@YouTube','@FortniteGame','@BillGates','@JeffBezos']

以及由推文制作的嵌套列表,按单词拆分。

tweets_splitted_by_words=[['@MrBeastYT','YOU’RE','THE','LAST','ONE','FINISH','MISSION','#TeamTrees'],['@MrBeastYT','@realDonaldTrump','do','something','useful','with','your','life','and','donate','to',['Please','please','donate']]

仅当每个子列表包含list_of_users中的至少一个用户时,我才想创建由tweets_splitted_by_words的子列表创建的第三个新列表。 我想要的输出:

output=[['@MrBeastYT','#TeamTrees']]

我尝试了以下代码,但没有成功:

tweets_per_user_mentioned= []
giorgia=[]
for r in range(len(tweets_splitted_by_words)):
    giorgia.append(r)
    for _i in range(len(giorgia)):
        if _i  in range(len(list_of_users)):
         tweets_per_user_mentioned.append(tweets_splitted_by_words[r])
        else:
            pass
print(tweets_per_user_mentioned)
hwcqg 回答:如何基于另一个列表中的项目从嵌套列表创建第三个列表

由于您将在用户列表上执行查找,因此最好使用set数据结构。 Sets provide O(1) lookup大大降低了许多问题的时间复杂度。

对于过滤,我只使用python内置的any和列表理解

set_of_users = set(list_of_users)
filtered_tweets = [tweet for tweet in tweets_splitted_by_words \
                         if any(word in set_of_users for word in tweet)]
本文链接:https://www.f2er.com/3131294.html

大家都在问