2014-03-28 80 views
0

不明白为什么,帮助赞赏。它每次都只是返回[]。用论据编辑,对不起。Python列表不能将项目追加到列表

def in(f, e): 
    n = len(f) 
    a = 0 
    b = 0 
    c = 0 
    m = [] 
    for i in range (1, n): 
     a = 0 
     for j in range (0, n + 1): 
      if (e[i - 1] == (j, i)): 
       a = a + 1 
       m.append(a) 
    return m 

print(in([1, 2, 3] , [(1, 2), (2, 1), (3, 2)])) 
+3

什么是作为'f'和'e'传入? –

+0

您的函数覆盖内置'in'运算符.. – msvalkon

+0

我认为您需要在第一个for循环后缩进所有内容(除了返回值)。另外,我们需要知道Tim如何说'f'和'e'。 –

回答

3
for j in range (0, n + 1): 
    print e[i - 1], 
    print (j, i) 
    if (e[i - 1] == (j, i)): 

我将这两版画用于测试目的和下面是他们的输出。 (我使用python 2.7,因此语句,而不是功能,但并没有真正有所作为)

(1, 2) (0, 1) 
(1, 2) (1, 1) 
(1, 2) (2, 1) 
(1, 2) (3, 1) 
(2, 1) (0, 2) 
(2, 1) (1, 2) 
(2, 1) (2, 2) 
(2, 1) (3, 2) 

正如你所看到的,e[i - 1]是永远等于(j, i),因此它永远不会输入if块,并且不会将项目追加到列表中,因此它保持为空,并且函数返回[]

顺便说一句,我也不得不改变函数名称,因为正如评论中提到的,def in(f, e):产生一个SyntaxError。