Как отладить это простое домашнее задание на Python? - PullRequest
0 голосов
/ 13 октября 2011

Мне нужно немного помочь с проблемой домашнего задания для школы с использованием 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 ]

5 голосов
/ 13 октября 2011

Вам необходимо связать каждый элемент A с соответствующим элементом в B, а затем изменить их.

[x % y for (x, y) in zip(A, B)]
0 голосов
/ 13 октября 2011

Ответ Игнасио правильный и самый питонический, это более простой способ:

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

Смотрите комментарии тоже!

...