这是一个我试图找出面试前问题的问题。我不知道python那么我正在努力解决这个问题。
这项工作的真正问题是大的表现并使其变得更好但我能做到这一点我只需要理解这段代码
问题A :在is_bar中,他们将迭代器与数组进行比较(如果i == b)。这相当于(如果i == b.length)?
问题B : 所以跟随函数的流程并假设上面和(a = [1,2,3] b = [3,4,5])为真,第一个比较是比较两个迭代器????
所以它会是:
但这没有意义。显然有一些东西我缺失,因为一个函数需要2个数组,然后创建一个大小相同的第二个数组的数组,并使所有的值= 1将是愚蠢的。
问题C :b.keys()确切地返回了什么(我查找了该函数,但它显示了“所有使用的密钥的列表”但是这没有意义,因为它是一个 - 维数组)
def foo(a, b):
""" a and b are both lists """
c = []
for i in a:
if is_bar(b, i):
c.append(i)
return unique(c)
def is_bar(a, b):
for i in a:
if i == b:
return True
return False
def unique(arr):
b = {}
for i in arr:
b[i] = 1
return b.keys()
答案 0 :(得分:1)
该功能可以简化为:
def foo(a, b):
""" a and b are both lists """
return list(set(a)&set(b))
答案 1 :(得分:1)
答:否。它会将a
的每个元素与b
进行比较。因此,如果b
是a
的元素,则会返回True
。
B:根据以上内容进行更改。
C: b
不是数组。这是一本字典(b = {}
)。