Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.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_List - Fatal编程技术网

Python在列表中查找公共元素

Python在列表中查找公共元素,python,list,Python,List,我需要从2个列表中找到公共元素,如果没有,则打印[]。我设法做了第一部分,但当我添加其他内容时,它会横向移动 def find_common(L1,L2): for element in L1: if element in L2: return (element) else : return [] L1 = ['Dancing', 'Computers', 'Rowing'] L2 = ['Comp

我需要从2个列表中找到公共元素,如果没有,则打印[]。我设法做了第一部分,但当我添加其他内容时,它会横向移动

def find_common(L1,L2):
   for element in L1:
        if element in L2:
            return (element)
        else :   
            return []



L1 = ['Dancing', 'Computers', 'Rowing']
L2 = ['Computers', 'Books', 'Movies']

print(find_common(L1,L2)) #should print "Computers"

L1 = ['Fishing'] 
L2 = ['Swimming']

print(find_common(L1,L2)) #should print []

此代码的输出现在是[]。如果我不添加else函数,则输出为“Computer”,这是正确的。问题是,我还需要检查一些没有公共元素和输出[]的列表,这里出现了错误。我犯了什么错?多谢各位

注意
return
将退出该函数,因此您只希望在
if
语句中有一个函数。此外,使用
集合检查成员资格将更快:

def find_common(L1,L2):
    s2 = set(L2)
    for element in L1:
        if element in s2:
            return element
    else:
        return []

find_common(L1, L2)
# ['Computers']

您好,您得到[]是正常的,因为return将中断(退出)您的代码

 def find_common(L1,L2):
     for element in L1:
        if element in L2:
           print(element)
如果你想从你的代码中得到一个类似单词的列表,你必须初始化一个空列表,然后填入循环中

 def find_common(L1,L2):
     Similar = []
     for element in L1:
        if element in L2:
           Similar.append(element)
     return Similar

如果L1中只有一个元素在L2中不存在,则函数find_common已经返回[]。因此,仅当L1中的元素都不在L2中时,即在运行整个循环时,才应返回[]:

def find_common(L1,L2):
   for element in L1:
        if element in L2:
            return (element)
   return []

这个问题已经得到了回答。
[x代表L1中的x,如果x代表L2]
由于我们只需要找到一个相交元素,然后就可以返回,所以设置的解决方案不一定便宜。如果只有一个公共元素,则可能是@philipp。问题说“我需要找到公共元素”这也是为什么当找到一个元素时,他会立即在循环中返回。啊,是的,你在这种情况下是对的,那么唯一不必要的部分就是
否则
语句@philipOne可以在一个函数中有多个返回。请注意,如果在循环中找不到公共元素,则会隐式返回None。另外,我认为只有在存在重复的情况下,使用set才有价值。这就成功了,也许这是一个愚蠢的问题,但是你能解释一下我的代码和你的代码之间的区别吗?只有返回部分,或者在我的情况下,谢谢你。区别在于我的返回在循环之后,而你的返回在循环中。在L2中找不到L1的一个元素时,您的函数已经提前返回。