Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python:在另一个列表中搜索一个列表中的字符串,然后将整个列表项追加到新列表中_Python - Fatal编程技术网

python:在另一个列表中搜索一个列表中的字符串,然后将整个列表项追加到新列表中

python:在另一个列表中搜索一个列表中的字符串,然后将整个列表项追加到新列表中,python,Python,例如: L1=['cat', 'dog', 'fish', 'bird', 'rabbit', 'horse'] L2=[('cat', 'a', 'b', 'c'), ('cat', 'c', 'd', 'e'), ('cat', 'e', 'f', 'g'), ('fish', 'x', 'y', 'z'), ('dog', 'w', 'x', 'y'), ('dog', 'z', 'y', 'x'), ('horse', '1', '2', '3'), ('monkey', 'a', '

例如:

L1=['cat', 'dog', 'fish', 'bird', 'rabbit', 'horse']

L2=[('cat', 'a', 'b', 'c'), ('cat', 'c', 'd', 'e'), ('cat', 'e', 'f', 'g'), ('fish', 'x', 'y', 'z'), ('dog', 'w', 'x', 'y'), ('dog', 'z', 'y', 'x'), ('horse', '1', '2', '3'), ('monkey', 'a', 'b', 'c'), ('kitten', 'h', 'i', 'j'), ('bird', '4', '5', '6')]
我试图在L2中搜索L1中的字符串,这样,如果L1中的字符串出现在L2的任何部分中,则L2'cat,a,b,c'中的整个条目将被附加到一个新列表中。我还认为,也许从L1中删除不包含字符串任何部分的条目是可行的。 我试过:

def searcher(L1, L2):
    common = []
    for x in L1:
        if re.search(x, L2):
            common.append(L2)

    return common
但这不起作用。 我正在使用的实际列表要长得多,因此一个高效的代码将真正帮助我

谢谢

试试看

s = set(L1)
new_list = [a for a in L2 if any(b in s for b in a)]
试一试

也许吧

也许吧


为什么在L2中用括号括住字符串?他们什么也不做。或者你的意思是“猫”、“a”、“b”、“c”作为第二语言的第一个词条吗?@marsx:你试过什么不起作用的?否则,这只是一个家庭作业问题。我的意思是“cat”、“a”、“b”、“c”,对不起。我尝试了:def searcherL1,L2:common=[]在L1中的x:if re.searchx,L2:common.appendL2返回common为什么在L2中字符串周围加括号?他们什么也不做。或者你的意思是“猫”、“a”、“b”、“c”作为第二语言的第一个词条吗?@marsx:你试过什么不起作用的?否则这只是一个家庭作业问题。我的意思是“cat”、“a”、“b”、“c”,对不起。我尝试了:def searcherL1,L2:common=[]用于L1中的x:if re.searchx,L2:common.appendL2 returncommon@marsx:答案是针对你问题的第一个版本。现在更新了。事实上,一旦你取出。分割部分,它就可以完美地工作。谢谢@marsx:答案是针对你问题的第一个版本。现在更新了。事实上,一旦你取出。分割部分,它就可以完美地工作。谢谢
s = set(L1)
new_list = [a for a in L2 if s.intersection([w.strip() for w in set(a.split(","))])]