如何在这个简单的Python作业中调试?

时间:2011-10-13 06:01:27

标签: python list-comprehension

我需要一些帮助来解决学校使用python的家庭作业问题。提示很简单,但我似乎无法弄明白。

'''
rem(A,B) returns the list 
              [A[0]%B[0], A[1]%B[1], ...]  etc

>>> rem( (10,20,30), (7,8,9) )
[3, 4, 3]
>>> X = [ i for i in range(10,18) ] 
>>> Y = [ j+3 for j in range(8) ]
>>> rem(X,Y)+["?"]
[1, 3, 2, 1, 0, 7, 7, 7, '?']
>>> rem( [5,3], [3,2] )
[2, 1]
>>> rem( [10,9], [5,4] )
[0, 1]
'''

我已经创建了这段代码片段,但有点不行:

def rem(A,B):
    return [A[0] % b for b in B]

现在定义正常,但仅适用于每个序列中的第一个值。我认为这是由于A[0] - 我需要一些方法来做A[x+1],但我不确定。此外,我非常确定我必须在定义中的某处使用range()

2 个答案:

答案 0 :(得分:5)

您需要将A的每个元素与B中的相应元素配对,然后修改它们。

[x % y for (x, y) in zip(A, B)]

答案 1 :(得分:0)

Ignacio's answer是正确的,也是最pythonic的,这是更基本的方式:

def rem(a,b):
    l = []
    for x in range(len(a)):
         l.append(a[x]%b[x])
    return l

另见评论!