Python 在列表中查找字符串的列表理解?

Python 在列表中查找字符串的列表理解?,python,list-comprehension,Python,List Comprehension,我有一个小挑战,我想管理-如果可能的话-与列表理解 例如: all_words = ["dongtestdong", "hello", "i", "am", "dongtest2dong", "like", "to", "make", "dongtest3dong", "dance", "tonight" "do"] split_list = ["test", "test2", "test3"] 现在我想做的是-每次我在所有单词中找到一个字符串,它与拆分列表中的任何

我有一个小挑战,我想管理-如果可能的话-与列表理解

例如:

all_words = ["dongtestdong", "hello", "i", "am", "dongtest2dong", "like", "to", 
             "make", "dongtest3dong", "dance", "tonight" "do"]
split_list = ["test", "test2", "test3"]
现在我想做的是-每次我在所有单词中找到一个字符串,它与拆分列表中的任何字符串匹配,我想得到“test”字符串和所有单词字符串中的下两个字符串

因此,在上面的示例中,新字符串将是:

new_string = ["dongtestdong", "hello", "i", "dongtest2dong", "like", "to", 
              "dongtest3dong", "dance", "tonight"]

以下是一个非优化列表理解:

new_list = [item for sublist in set([tuple(all_words[i:i+3]) for i,j in enumerate(all_words) for k in split_list if k in j]) for item in sublist]
输出

["dongtestdong", "hello", "i", "dongtest2dong", "like", "to", "dongtest3dong", "dance", "tonight"]

以下是一个非优化列表理解:

new_list = [item for sublist in set([tuple(all_words[i:i+3]) for i,j in enumerate(all_words) for k in split_list if k in j]) for item in sublist]
输出

["dongtestdong", "hello", "i", "dongtest2dong", "like", "to", "dongtest3dong", "dance", "tonight"]
从functools导入reduce
结果=[all_words[ind:ind+3]表示ind,枚举中的x(all_words)(如果有)(拆分列表中的y表示x中的y)]
#如果需要,请将列表展平
结果=列表(减少(λx,y:x+y,结果))
从functools导入reduce
结果=[all_words[ind:ind+3]表示ind,枚举中的x(all_words)(如果有)(拆分列表中的y表示x中的y)]
#如果需要,请将列表展平
结果=列表(减少(λx,y:x+y,结果))

你能分享一下你尝试过的吗?更新了最初为什么要使用列表理解的具体要求?@AmitNanaware我只是在所有单词中添加了一个for单词,然后在字符串中添加它们到列表中,但我希望使用尽可能少的代码possible@DominikLemberger:老实说,这听起来像是过早的优化。我还听到一些不一定合理的假设(列表理解等于“快”,“快”等于“最少的代码”)。你能分享一下你尝试过的吗?更新了原始的为什么使用列表理解的具体要求?@AmitNanaware我在所有单词中都使用了for单词,然后在字符串中添加到列表中,但我希望使用尽可能少的代码possible@DominikLemberger:老实说,这听起来像是过早的优化。我也听到了一些不一定合理的假设(列表理解等于“快”,“快”等于“最少的代码”)。感谢我一直在寻找的东西-看看我是否能优化它如何感谢我一直在寻找的东西-看看我是否能以某种方式优化它