\func now()
print(func([1,2,3,4,5],[5,6,7,8,9]))>>是
print(func([1,2,3,4,5],[6,7,8,9]))>>无
为什么在第二种情况下该函数返回None?它应该返回“结果”,它是对或错。
答案 0 :(得分:2)
控制语句未达到
NSLog
因此该函数没有要返回的内容,因此它返回None。
这将返回True或False
result = True
return result
答案 1 :(得分:2)
我可以建议一个更清洁(更快)的解决方案吗? Python的强项之一是列表理解。
def func(l1, l2):
return any([x==y for x in l1 for y in l2])
print(func([1,2,3,4,5], [5,6,7,8,9]))
print(func([1,2,3,4,5], [6,7,8,9]))
输出:
True
False
答案 2 :(得分:1)
由于当前正在编写函数,因此只有在l1和l2的至少一个元素之间存在成对匹配时,它才起作用-它将正确地将结果从False设置为True,然后返回结果。但是,如果l1和l2中的所有元素都不成对相等,则将永远不会返回return语句,因为您的函数将退出循环,然后终止该函数-不返回任何内容。
因此,return语句需要在循环之外。否则,如果列表中的所有元素都不相等,则您的函数将不会返回任何内容。
def func(l1, l2):
result = False
for x in l1:
for y in l2:
if x == y:
result = True
return result
答案 3 :(得分:0)
因此,让我们逐步了解一下这里发生的情况。您检查l1
和l2
的每个元素,如果它们相等则返回值。现在,将其保留为空白。这意味着在这段代码中-
if x == y:
result = True
return result
如果result = True
,则仅输入do return result
和x == y
语句。如果您提到的第二个示例中没有发生x == y
的情况。有一个名为result = False
的变量,但没有触发任何return
语句。这意味着它不返回任何东西。因此,您得到一个None
。
您可以在代码中进行此修改,以使其像您要求的那样工作-
def func(l1, l2):
result = False
for x in l1:
for y in l2:
if x == y:
result = True
return result
return result
如果没有触发内部return语句,它将返回None
,而不是返回result
。