这是做什么的

时间:2011-07-23 19:12:34

标签: python

这是一个我试图找出面试前问题的问题。我不知道python那么我正在努力解决这个问题。

这项工作的真正问题是大的表现并使其变得更好但我能做到这一点我只需要理解这段代码

问题A :在is_bar中,他们将迭代器与数组进行比较(如果i == b)。这相当于(如果i == b.length)?

问题B : 所以跟随函数的流程并假设上面和(a = [1,2,3] b = [3,4,5])为真,第一个比较是比较两个迭代器????

所以它会是:

  1. is_bar(b,0)
  2. for b in b(a a but b b from above)
  3. 如果0 == 0
  4. 所以评估为true并执行c.append(0)
  5. 这样做了3次以上,因为它比较迭代器,它会追加1,2而不是唯一(c) 6.它使一个新的数组与c的大小相同,并使每个值= 1
  6. 但这没有意义。显然有一些东西我缺失,因为一个函数需要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()
    

2 个答案:

答案 0 :(得分:1)

该功能可以简化为:

def foo(a, b):
    """ a and b are both lists """
    return list(set(a)&set(b))

答案 1 :(得分:1)

答:否。它会将a的每个元素与b进行比较。因此,如果ba的元素,则会返回True

B:根据以上内容进行更改。

C: b不是数组。这是一本字典(b = {})。