Python在列表中查找公共元素
我需要从2个列表中找到公共元素,如果没有,则打印[]。我设法做了第一部分,但当我添加其他内容时,它会横向移动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
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的一个元素时,您的函数已经提前返回。